Terraform meetup tokyo #1 Lightningh Talk https://terraform-jp.connpass.com/event/137865/
How to contribute toterraform-provider-awsTakeshi KondoSRE at Quipper2019/08/01Terraform Meetup Tokyo#1
View Slide
• Run test• Set debug• Read code• Read Issue• Read Pull Request
Merged 3 Pull Requests
Merged 3 Pull Requests See my blog for details: Google “πφϫλϦϚΠϥΠϑ”- Terraform importͷ࣮- Terraform aws provider PR / lambdaͷnode enginev6.10ͷEOLରԠ
• Join Terraform Source CodeReading• Join #codereading atTerraform-jp slack
Agenda• Basic source code structure• 4 Steps of preparing• 6 Steps of contributing
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/%FpOFEw $SFBUFw 3FBEw 6QEBUFw %FMFUFw *NQPSUFS
4 Steps of preparing• Clone and build• Set debug• Run test• Push to fork
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
Set debug (Thanks @minamijoyo)• Terraform/main.go• terraform-provider-aws/main.gofunc 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})}
Set debug (Thanks @minamijoyo)• Terraform/main.go• terraform-provider-aws/main.gofunc 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
Run testcat .envrc \export AWS_PROFILE=“chaspy”make testacc \TESTARGS=‘-run=TestAccAWSEcsCluster_basic’Note that resources are actually createdand charged for your account
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
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
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
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
Conclusion• Anyone can send a pull request • Not afraid of Terraform by contributing • Motivated to use the latest version
• Join Terraform Source CodeReading• Next: #2 2nd Sep. (Mon)• Join #codereading atTerraform-jp slack
• @officel / @raki • Organizer of Terraform-jpSpecial Thanks • @morihaya • Co-organizer meetup• @minamijoyo • Lead code-reading• @kterada0509 / teraken0509• Lead code-reading
Thank You!chaspychaspy_ / chaspy_enSite Reliability Engineerat QuipperTakeshi KondoSRE Lounge Terraform-jp