ちょっと話題の記事

5人まで無料! Terraform Cloudを使ってみた

HashiConfにて、Terraform Cloudが5人まで無料で使えるようになったとのことですので、早速使ってみました! 実際の利用する方法、おすすめの運用方法などもまとめてレポートします!
2019.09.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

最近ウィルキンソンの炭酸水にハマっている もこ@札幌オフィスです。

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人まで無料とのことなので、是非試してみてください!