5人まで無料! Terraform Cloudを使ってみた
最近ウィルキンソンの炭酸水にハマっている もこ@札幌オフィスです。
HashiConfにて、Terraform Cloudが5人まで無料で使えるようになったとのことですので、早速使ってみました!
実際の利用する方法、おすすめの運用方法などもまとめてレポートします!
Workspaceを作成
Terraform Cloudのアカウント作成方法などは省略させていただきます。
アカウント作成が終わった画面で"Create a new Workspace"が表示されます。
GitHub, GitLab, Bitbucketなどの主要Gitサービスとインテグ出来るそうです。
今回は個人のGitHubアカウントでPrivateリポジトリを作成し、インテグしてみます。
コードをGitHubにPush、環境変数を設定
リポジトリをTerraform Cloudと連携させるためには、リポジトリが空の状態だと怒られるため、AWS ProviderとVPCを作成するコードをGitHubにPushします。
後に環境変数にAWSのAcesskey, Secretkeyを入れるため、variableで取得できるように書いていきます。
IAM Userのaccess_keyとsecret_keyをTerraform Variablesに入れ、Terraform Cloud上で実行できるようにします。
試しに実行してみる
左上のQueue planから Cloud上でterraform plan を実行することが可能です。
実行するとこんな感じ。
デフォルトの設定だとApplyは手動でボタンをクリックすることによってapplyが走ります。
AWS上にVPCが作成されたことを確認出来ました。
MasterにMerge自動plan & applyをやってみる
GitHub上で完結し、MasterにMergeされたら速やかにデプロイ出来るように、Applyを自動実行する設定に変更します。
Terraform Cloudの右上のSettingsからGeneralで、Auto applyに変更し、Save settingsで保存です。
Pull Requestを出してみる
TerraformのCI/CDということで、Pull Requestを出すとどのような挙動をするのかを確認してみます。
まずはテストとしてMulti-AZのSubnetを追加するコードをMasterから切った別ブランチにPushします。
Pull Requestを作成すると自動でテスト(terraform plan)が走り、結果をPull Requestの画面で確認することも可能です。
Terraform Cloud上ではこんな感じでテスト(terraform plan)が走っています。
MasterにMergeされると、自動的にapplyされます。
Terraform Cloudが自動実行されるタイミングはMasterの変更とPull Request作成時のみとなっており、
もちろんPull Rqeustのときはplanのみの実行で、MasterにMergeされない限りapplyは実行されないため、安全なCI/CDが組めそうです。
気になるstate
Terraform Cloudではapplyされたstateが保存されていて、いつでも参照出来る状態となっています。
また、applyは同時実行がされないため、「GitHub上でPull Requestを作成し、terraform planのテストを通過した上でMasterにMerge、MasterにMergeの自動実行以外でapplyをしない」運用にすると、事故る確率は格段に減ると思います。
お片付け
環境のdestroyを実行したい場合、SettingsからDestruction and Deletionで、削除することが可能ですが、
事故防止のため環境変数に 「CONFIRM_DESTROY=1」を設定し、Queue Destroy planをするようです。
まとめ
Terraform Cloudを利用することでシンプルにCI/CDを組むことができ、安全な運用が簡単に出来るようになります。
5人まで無料とのことなので、是非試してみてください!