Help us understand the problem. What is going on with this article?

terraform-provider-awsへ初コントリビュートできた話

はじめに

こんにちは!Wano株式会社nariと申します。
こちらは、terraform Advent Calendar 2019 20日目の記事として書いております。

この記事では、先月 terraform-jpの有識者の方々のおかげで、terraform-provider-awsへ初コントリビュートすることができたので、その際のプロセスとこれからコントリビュートしていきたい皆様へ一点注意事項を共有していきたいと思います。

スクリーンショット 2019-12-20 01.21.39.png

今回の対象Issue: fix to use keyvaluetags in aws_route53_resolver_endpoint and aws_rout… by fukubaka0825 · Pull Request #10842 · terraform-providers/terraform-provider-aws · GitHub

想定読者

  • terraformやproviderにコントリビュートしたいが、何から始めたらいいかよくわからない方

どうコントリビュートしたか

1. 環境構築/Terraform Source Code Reading会に参加

まず、常々おじゃましたいなと思っていたTerraform Source Code Reading#3 - connpassというイベントに参加してみることにしました。
このイベントはterraform-jpというterraformの日本語コミュニティ(Slackもとても活発)が2ヶ月置きに開催しているイベントに、 @kterada0509 や @chaspy などのファシリテーターを中心にterraform本体やproviderのソースやissueを読んで学んでいこうという会です。是非皆さん参加してみてください。(来月もあるっぽい、僕も参加します。)

その事前準備として、Terraform職人入門: 日々の運用で学んだ知見を淡々とまとめる - Qiitaの「Terraformをデバッグする技術」の部分や、Terraform/AWS Provider source code reading #1 - HackMDTerraform Source Code Reading#2 - HackMDを参考にして、pull requestを出すときに必要になるテストやデバッグの環境を整えました。
また、@chaspy さんのTerraform meetup tokyo#1 - connpassでの発表資料 How to contribute to terraform-provider-aws - Speaker Deckを読んで、コントリビュートに必要な大まかなflowを頭に入れました。

当日は、環境構築で詰まっていたところ(なぜかterraform-provider-awsをgo installするとversion0.0.0になる問題)を解決したり、first good issueのタグのついたissueが全然ファーストにグッドじゃない、、ってなりながら色んなissueを眺めてできそうなものをちょいちょい挑戦していきましたが、少し時間がかかりそうなものばかりでした。

2. terraform-jpのSlackチャンネルで本当のfirst good issue情報をキャッチ

terraform-jpの#codereadingチャンネルに投げられていた以下の @kterada0509 氏のメッセージが言及しているissueが、マジにファーストに良いやつっぽいというのをissueを読んだりしながら感じ、これならいけそうということで着手し始めました。

スクリーンショット 2019-12-20 08.35.19.png

3. なんのためのissueなのかを確認し、やる気を出す

親issueであるDefault tags for all resources · Issue #7926 · terraform-providers/terraform-provider-aws · GitHubを読んで、env=hogeみたいな環境指定のtagとかをdefaultで指定するために、必要なrefactorのissueであることを理解しました。それ欲しいやつやん!

I would like to set default tags with the provider, that then automatically get applied to all AWS resources that support it.

4. 手順通り実装/Testし、pull requestを出す

非常に細かく各ケースに対する要求する実装がissueに記載されていたので、リファクタするresourceを選択してその通り実装するだけっちゃだけでした。

スクリーンショット 2019-12-20 08.48.57.png
この中から、適当に僕は aws/resource_aws_route53_resolver_endpoint.goaws/resource_aws_route53_resolver_rule.goファイルを選択して、タスクに取り掛かりました。

以下のように、何でリソースをidentifyするかをとちって少し詰まってしまったりもしましたが、 @kterada0509 さんに質問に答えてもらったりしながら、無事testが通るところまで実装することができました。

⬇︎以下がその際のメッセージのやりとり(このように、気さくに質問に答えていただけました。感謝)
スクリーンショット 2019-12-20 08.44.30.png

スクリーンショット 2019-12-20 08.41.25.png
そうして、2019/11/12に無事初aws providerへのプルリクを作ることができました。(リアクションがあったけえ)
スクリーンショット 2019-12-20 08.44.00.png

5. 3日後無事マージされる

これもSlackに投げられたコメントで知りました笑 無事プルリクを出してから3日後の2019/11/15にマージされていることが確認できました。(added this to the v2.36.0 milestone on 15 Nov)
放置されているプルリクとかもあるようなのですが、このissueは詳細に書かれていてreviewerがレビューしやすかったんじゃないかなぁとか思っています。
スクリーンショット 2019-12-20 08.46.02.png

これを読み、コントリビュートしてみようという方に気をつけてほしいこと

どうコントリビュートしたかのStep4で、testを実行していたかと思うのですが、このterraform providerのtestは実際にリソースを作成したり削除したりするので、途中でリソースが作りかけで放置される危険性があります。

私のケースですと、テストが終わった後使用したアカウントを見てみたところ、リソースが作られたままになっていました。
今回扱ったRoute53 resolver endpoitは0.125$/hがENIごとに課金されます(料金 - Amazon Route 53 | AWS)ので、放置され続けていたらと思うとゾッとします。。。。

ですのでテスト後きちんと使用したAWSアカウントを確認して、無駄なテスト対象リソースが立っていないか確認する必要があります。

最後に

少しテンションの下がる注意事項が挟まってしまいましたが、逆に言えばそこさえ注意していただければ、すでに先人たちの素晴らしい資料&terraform-jpという素晴らしい日本コミュニティが存在するので、これを読んでいる万人がすぐにterraformコントリビュータになることができます是非みんなでコントリビュートしてterraform界隈を盛り上げていきましょう!

僕も継続してコントリビュートできるように頑張ります。また、 terraform-jpコミュニティにはお世話になりっぱなしなので、登壇諸々で恩返しできるように頑張っていきたいです。

最後に、terraform-jpの有識者の皆さん、本当にありがとうございました! @kterada0509 @chaspy @minamijoyo @raki

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした