How to contribute to terraform-provider-aws

How to contribute to terraform-provider-aws

Terraform meetup tokyo #1 Lightningh Talk
https://terraform-jp.connpass.com/event/137865/

93c80c388fe9d8f9df7d030549a0ff0b?s=128

Takeshi Kondo

August 01, 2019
Tweet

Transcript

  1. How to contribute to terraform-provider-aws Takeshi Kondo SRE at Quipper

    2019/08/01 Terraform Meetup Tokyo#1
  2. None
  3. • Run test • Set debug • Read code •

    Read Issue • Read Pull Request
  4. Merged 3 Pull Requests

  5. Merged 3 Pull Requests See my blog for details: Google

    “πφϫλϦϚΠϥΠϑ” - Terraform importͷ࣮૷ - Terraform aws provider PR / lambdaͷnode engine v6.10ͷEOLରԠ
  6. • Join Terraform Source Code Reading • Join #codereading at

    Terraform-jp slack
  7. Agenda • Basic source code structure • 4 Steps of

    preparing • 6 Steps of contributing
  8. Agenda • Basic source code structure • 4 Steps of

    preparing • 6 Steps of contributing
  9. Basic source code structure • terraform-provider-aws • aws/ • data_source_aws_iam_policy.go

    • data_source_aws_iam_policy_test.go • resource_aws_iam_policy.go • resource_aws_iam_policy_test.go • website/ %FpOFE w $SFBUF w 3FBE w 6QEBUF w %FMFUF w *NQPSUFS
  10. Agenda • Basic source code structure • 4 Steps of

    preparing • 6 Steps of contributing
  11. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  12. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  13. Clone and build (Thanks @minamijoyo) • git clone git@github.com:hashicorp/terraform.git •

    cd terraform • git checkout v0.12.3 • export GO111MODULE=on • make dev -> $GOPATH/bin/terraform • git clone git@github.com:terraform-providers/ terraform-provider-aws.git • cd terraform-provider-aws • git checkout v2.21.1 • export GO111MODULE=off • make • See Hackmd for details • https://hackmd.io/HeEmX_dPQAaEANhiH1lKQQ?view
  14. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  15. Set debug (Thanks @minamijoyo) • Terraform/main.go • terraform-provider-aws/main.go func main()

    { + log.SetFlags(log.Llongfile) // Override global prefix set by go-dynect during init() log.SetPrefix("") os.Exit(realMain()) import ( "github.com/hashicorp/terraform/plugin" "github.com/terraform-providers/terraform-provider-aws/aws" + "log" ) func main() { + log.SetFlags(log.Llongfile) plugin.Serve(&plugin.ServeOpts{ ProviderFunc: aws.Provider}) }
  16. Set debug (Thanks @minamijoyo) • Terraform/main.go • terraform-provider-aws/main.go func main()

    { + log.SetFlags(log.Llongfile) // Override global prefix set by go-dynect during init() log.SetPrefix("") os.Exit(realMain()) import ( "github.com/hashicorp/terraform/plugin" "github.com/terraform-providers/terraform-provider-aws/aws" + "log" ) func main() { + log.SetFlags(log.Llongfile) plugin.Serve(&plugin.ServeOpts{ ProviderFunc: aws.Provider}) } • See Hackmd for details • https://hackmd.io/HeEmX_dPQAaEANhiH1lKQQ?view • Terraform৬ਓೖ໳: ೔ʑͷӡ༻ͰֶΜͩ஌ݟΛ ୶ʑͱ·ͱΊΔ / @minamijoyo • TerraformΛσόοά͢Δٕज़ • https://qiita.com/minamijoyo/items/1f57c62bed781ab8f4d7
  17. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  18. Run test cat .envrc \ export AWS_PROFILE=“chaspy” make testacc \

    TESTARGS=‘-run=TestAccAWSEcsCluster_basic’ Note that resources are actually created and charged for your account
  19. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  20. Push to fork • # fork the repository • #

    terraform-providers/terraform-provider-aws • # -> chaspy/terraform-provider-aws • git remote add fork https://github.com/chaspy/ terraform-provider-aws.git • git push fork
  21. Agenda • Basic source code structure • 4 Steps of

    preparing • 6 Steps of contributing
  22. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push
  23. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push • Ask contributor (Thanks @kterada0509) • See “good first issue” label • Recommend: Support import issue
  24. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push
  25. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push
  26. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push
  27. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push
  28. 6 Steps of contributing • Determine the issue you solve

    • Make a sandbox • Apply the sample code • Reproduce the issue with debug log • Read the reference PR • Read a code and commit and push • Reviewed in a few days • They review kindly
  29. Conclusion • Anyone can send a pull request • Not

    afraid of Terraform by contributing • Motivated to use the latest version
  30. • Join Terraform Source Code Reading • Next: #2 2nd

    Sep. (Mon) • Join #codereading at Terraform-jp slack
  31. • @officel / @raki • Organizer of Terraform-jp Special Thanks

    • @morihaya • Co-organizer meetup • @minamijoyo • Lead code-reading • @kterada0509 / teraken0509 • Lead code-reading
  32. Thank You! chaspy chaspy_ / chaspy_en Site Reliability Engineer at

    Quipper Takeshi Kondo SRE Lounge Terraform-jp