フォーム読み込み中
こんにちは、クラウドエンジニアの劉です。
TerraformはHashiCorp社が開発し、主にクラウドのIaC(Infrastructure as Code)ツールとして活用されています。今まではローカルマシンでTerraformツールを実行する場面が多かったですが、今回、紹介するのは、HashiCorp社が提供するSaaS型のTerraformです。
Terraform Cloudの紹介と、Github、Slack連携手順も簡単に紹介します。
Terraform Cloudの利用場面として、下記のアーキテクチャが考えられます。
(1)開発者はGithubを利用してTerraformのコードを作成し、Pull&Requestを発行します。
(2)レビュー社はコードを確認後、メインブランチにマージを行います。
(3)Terrform Cloudに予め対象レポジトリを設定し、Plan&Applyを実行します。
(4)複数Workspaceを設定した場合は、トリガーにて順次に実行されます。
(5)対象クラウドにリソースがデプロイされることを確認します。
本記事に記載した時点では、Terrform Cloudは主に以下のパーツ(機能)にて構成されています。
■ Organization:
上記アーキテクチャに示した通り、Terraform Cloudにおいての一番大きい管理単位となります。有料プランを利用する場合は、Organization単位にて課金が計算されます。
■ WorkSpace:
Terraform Cloudの実行フローとなる最小の構成単位となります。Workspace一つでも実行できますが、複数Workspaceを利用してワークフローを構成することも可能です。
■ Variable:
Workspace単位でTerraformの変数を定義します。下記VariableSetと重複する場合は変数の上書きすることが可能です。
■ Variable Set:
複数のWorkspaceで利用できるグローバル変数を定義します。
詳細な変数の優先順位は 公式ドキュメント Valiables よりご参照ください。
■ Run Trigger:
Workspace間の接続方法を定義することができます。複数Workspaceを利用する場合はソースWorkspaceを指定することでWorkspace間の連携を実現できます。
以上で、Terraform Cloudを利用するための基本的な機能、構成及び用語の解説が終わります。次の章からTerraform Cloud、Github、Slackの設定手順をご紹介します。
2.1 Slack Appの作成ページにアクセスします。
「Create an app」をクリックします。
2.2 「From Scratch」をクリックします。
2.3 「App Name」を入力し、Create Appをクリックします。
2.4 「Incoming Webhooks」をクリックし、ONに変更します。
2.5 「Add new webhook to workspace」をクリックします。
2.6 事前に作成した通知用チャンネイルを選択し、Allowをクリックします。
2.7 作成されたWebhook URLをコピーし、後ほどTerraform Cloud設定時に利用します。
3.1 Terraformのページ より Terraform Cloud のアカウントを作成します。
作成後、以下の画面が表示され、「Start from scratch」をクリックします。
3.2 新しい Organization を作成します。
3.3 今回は Github と連携したいため、Version control workflow を選択します。
3.4 「Github.com」 を選択します。
3.5 Githubの二要素認証を行います。
3.6 事前に作成したリポジトリを選択します。
3.7 新しい Workspace を作成します。
3.8 Terraform Working Directory を設定します。(Terraformのmainファイルが配置されているディレクトリを設定します。)
3.9 「Continue to Workspace overview」をクリックします。
3.10 「Configure variables」 をクリックします。
Terraform デプロイに必要なキーやシークレットなどをここに設定します。
3.11 「Settings」>「Notifications」を開き、新規通知設定を行います。
3.12 Slack を選択し、上記保存したWebhook URL を入力します。
以上で Terraform Cloud の設定が完了しました。
4.1 「Start new run」をクリックします。
4.2 Plan Only を選択し、Start run をクリックします。
4.3 Plan が正しく実行され、デプロイ対象リソースの一覧が表示されます。
4.4 問題なければ、Comment を記載し、Confirm Plan を実行します。
4.5 Apply が正しく実行されていることを確認します。
4.6 Terraform State ファイルは左ペインの States より確認できます。
また Overview より、デプロイされたリソース数なども確認可能です。
4.7 Destroy の場合は Settings > Destruction and Deletion を選択し、Queue Destroy plan をクリックします。
4.8 対象のWorkspace 名を入力し、削除を実行します。
以上で Terraform Cloud を使って一連のデプロイができました。
Slack 通知も以下のような感じで送信されるので、必要に応じて活用できればと思います。
最後までご覧いただきありがとうございました。
本記事はSaaS版のTerraformのご紹介と、Github、Slackの通知連携の設定手順についてご紹介しました。
今までIaaSのTerrformを多く利用していましたが、これを機にSaaS版も試していただけると幸いです。
条件に該当するページがございません