Terraform Cloudを使ってクラウドリソースをデプロイしてみた

2023年3月22日掲載

Terraform Cloud

こんにちは、クラウドエンジニアの劉です。

TerraformはHashiCorp社が開発し、主にクラウドのIaC(Infrastructure as Code)ツールとして活用されています。今まではローカルマシンでTerraformツールを実行する場面が多かったですが、今回、紹介するのは、HashiCorp社が提供するSaaS型のTerraformです。

Terraform Cloudの紹介と、Github、Slack連携手順も簡単に紹介します。

目次

  • 本記事はTerraform Cloudの基本機能、Terraform Cloudを利用したリソースのデプロイ手順、Github、Slackの連携方法について簡単に紹介します。

1.全体アーキテクチャおよびTerraform Cloudの機能紹介

1.1 全体アーキテクチャ

Terraform Cloudの利用場面として、下記のアーキテクチャが考えられます。

(1)開発者はGithubを利用してTerraformのコードを作成し、Pull&Requestを発行します。
(2)レビュー社はコードを確認後、メインブランチにマージを行います。
(3)Terrform Cloudに予め対象レポジトリを設定し、Plan&Applyを実行します。
(4)複数Workspaceを設定した場合は、トリガーにて順次に実行されます。
(5)対象クラウドにリソースがデプロイされることを確認します。

Terraform Cloudの機能概要

1.2 Terraform Cloudの機能紹介

本記事に記載した時点では、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.Slackの通知アプリ設定

2.1 Slack Appの作成ページにアクセスします。

「Create an app」をクリックします。

create-an-app

2.2 「From Scratch」をクリックします。

From Scratch

2.3 「App Name」を入力し、Create Appをクリックします。

App Nameを入力

2.4 「Incoming Webhooks」をクリックし、ONに変更します。

Incoming Webhooksを有効化

2.5 「Add new webhook to workspace」をクリックします。

2.6 事前に作成した通知用チャンネイルを選択し、Allowをクリックします。

2.7 作成されたWebhook URLをコピーし、後ほどTerraform Cloud設定時に利用します。

3.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.Terraform Cloudの実行及び確認

4.1 「Start new run」をクリックします。

Terraform Cloud 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 名を入力し、削除を実行します。

5.Slackの通知確認

以上で Terraform Cloud を使って一連のデプロイができました。

Slack 通知も以下のような感じで送信されるので、必要に応じて活用できればと思います。

まとめ

最後までご覧いただきありがとうございました。
本記事はSaaS版のTerraformのご紹介と、Github、Slackの通知連携の設定手順についてご紹介しました。
今までIaaSのTerrformを多く利用していましたが、これを機にSaaS版も試していただけると幸いです。

おすすめの記事

条件に該当するページがございません