我能够为terraform-provider-aws做出首次贡献的经历
首先
你好!我是Wano株式会社的nari。
这是关于terraform Advent Calendar 2019第20天的文章。
在这篇文章中,我想通过感谢上个月terraform-jp的专家们,他们的帮助让我能够首次对terraform-provider-aws进行贡献,并分享一下其中的过程,同时向所有希望以后进行贡献的人提供一些注意事项。
我已经合并了?这样我就成为了 Terraform 贡献者的新手!继续前进。https://t.co/CeD16v8KpZ

这次的目标问题是:通过fukubaka0825提交的Pull Request #10842来修复在aws_route53_resolver_endpoint和aws_rout中使用keyvaluetags的问题。
想要吸引的读者
- terraformやproviderにコントリビュートしたいが、何から始めたらいいかよくわからない方
你是如何贡献的
我将参加环境搭建/Terraform源代码阅读会。
首先,我决定参加Terraform Source Code Reading#3 – connpass这个活动,这是一次我一直想参加的活动。
这个活动是由terraform-jp这个日本的terraform社区(Slack也很活跃)每两个月举办一次,由@kterada0509和@chaspy等人担任主持人,我们将一起阅读学习terraform主体和provider的源代码和问题。请大家务必参加一试。(下个月也可能还会有,我也会参加的。)
作为准备工作,我参考了Terraform职人入门:我在日常运维中学到的经验总结 – Qiita的”调试Terraform技术”部分,以及Terraform / AWS Provider源代码阅读#1 – HackMD和Terraform源代码阅读#2 – HackMD,为提交pull request时需要的测试和调试环境做好了准备。
此外,我阅读了@chaspy先生在Terraform meetup tokyo#1 – connpass上的演讲资料”How to contribute to terraform-provider-aws – Speaker Deck”,已经了解了大致的贡献流程。
在那一天,我遇到了一些环境配置问题(奇怪的是,当我使用”go install”安装terraform-provider-aws时,版本变成了0.0.0),我设法解决了这个问题。此外,我浏览了许多问题,其中被标记为“first good issue”的问题并不完全符合“第一好问题”的定义。尽管如此,我还是尝试着解决了一些看起来能够完成的问题,但这些问题需要一些时间来解决。
在terraform-jp的Slack频道上捕捉到真正的first good issue信息。
在terraform-jp的#codereading频道上,@kterada0509提到的留言提及的问题,当我阅读问题并感受到问题的好处时,我决定开始着手处理这个问题。

确认问题的目的,并激发动力。
阅读了关于所有资源的默认标签的问题· Issue #7926 · terraform-providers/terraform-provider-aws · GitHub,我理解这是一个需要进行重构的问题,以便能够默认指定像 env=hoge 这样的环境标签。我真想要这个功能啊!
我希望能够与服务提供商一起设置默认标签,然后这些默认标签会自动应用于所有支持该功能的 AWS 资源。
4. 按照步骤进行实现/测试,提交拉取请求。
(Note: Chinese sentence structure may vary depending on the context, so this paraphrase is based on a general understanding.)
因为问题中详细说明了对每个案例的要求,所以只需选择要重构的资源并按照要求进行实现即可。

在确定如何标识资源的过程中,我可能有些困惑,但是在与@kterada0509进行交流并得到解答的过程中,我成功地实现了测试通过的功能。


5. 过三天后,将无事件合并。

希望阅读并贡献的人应该注意以下事项。
在如何贡献中第四步骤的时候,我想你应该在执行测试,但是这个Terraform提供者的测试实际上会创建或删除资源,因此存在资源被创建但放置的风险。
根据我的情况,在测试结束后查看了使用过的账户,发现资源一直被保留着。考虑到这次使用的Route53解析器终端节点按每个ENI收取0.125美元/小时的费用(费用 – Amazon Route 53 | AWS),如果一直被忽视,感觉有点毛骨悚然。。。。
因此,在测试结束后,需要确认使用了AWS帐户并检查是否存在不必要的测试资源。
最后
在这里插入了一些打击士气的注意事项,但反过来说,只要您注意到这一点,就已经有了先人们的精彩资料和一个伟大的日本terraform社区存在,所以每个阅读这篇文章的人都可以很快成为terraform的贡献者。让我们一起努力为terraform社区做贡献,为其发展壮大助一臂之力!
我会继续努力,以便能够继续为贡献出力。同时,由于一直受到terraform-jp社区的照顾,我也希望能够在演讲和其他方面回报社区的关照而努力。
最后,感谢terraform-jp的专家们!@kterada0509 @chaspy @minamijoyo @raki