Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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/

Takeshi Kondo

August 01, 2019
Tweet

More Decks by Takeshi Kondo

Other Decks in Technology

Transcript

  1. • Run test • Set debug • Read code •

    Read Issue • Read Pull Request
  2. Merged 3 Pull Requests See my blog for details: Google

    “πφϫλϦϚΠϥΠϑ” - Terraform importͷ࣮૷ - Terraform aws provider PR / lambdaͷnode engine v6.10ͷEOLରԠ
  3. Agenda • Basic source code structure • 4 Steps of

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

    preparing • 6 Steps of contributing
  5. 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
  6. Agenda • Basic source code structure • 4 Steps of

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

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

    debug • Run test • Push to fork
  9. Clone and build (Thanks @minamijoyo) • git clone [email protected]:hashicorp/terraform.git •

    cd terraform • git checkout v0.12.3 • export GO111MODULE=on • make dev -> $GOPATH/bin/terraform • git clone [email protected]: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
  10. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  11. 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}) }
  12. 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
  13. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  14. 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
  15. 4 Steps of preparing • Clone and build • Set

    debug • Run test • Push to fork
  16. 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
  17. Agenda • Basic source code structure • 4 Steps of

    preparing • 6 Steps of contributing
  18. 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
  19. 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
  20. 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
  21. 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
  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
  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 • Reviewed in a few days • They review kindly
  25. Conclusion • Anyone can send a pull request • Not

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

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

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

    Quipper Takeshi Kondo SRE Lounge Terraform-jp