
HCP TerraformでVCSドリブンを使ってみた
やること
GitHubとHCP Terraformを連携させ、VCSドリブン(VCSへの変更をトリガーにHCP TerraformのWorkspacesを起動)を設定。
前提
HCP TerraformでOrganizationを作成済みであること
GitHub:GitHub.comを利用
GitHubでパブリックのリポジトリを作成済みであること
実践!
1.HCP TerraformのApplication情報取得
1-1.HCP Terraform - Orgnization - Settings
※ぱっと見WorkspacesのSettingsに見えるが、OrganizationのSettingsです。

1-2.「Version Control」内の「Providers」

1-3.「Add a VCS provider」

1-4.「GitHub」-「GitHub.com」

1-5.表示されているApplication nameなどを控える
2.GitHubのClientID取得
2-1.GitHub - 右上のアイコン - 「Settings」

2-2.「Developer settings」

2-3.「OAuth Apps」-「New OAuth app」

2-4.項番1で控えた情報を入力し、「Register application」

2-5.「Client ID」を控える

2-6.「Generate a new client secret」

2-7.「Client secrets」を控える

3.VCS連携
3-1.項番1の画面に戻り、「Client ID」、「Client secrets」を入力し、「Connect and continue」


3-2.「Authorize xxxxxx」

3-3.「Skip and finish」


4.HCP TerraformでWorkspaces作成
4-1.HCP Terraform - Workspaces - 「New」-「Workspace」

4-2.プロジェクトを選択し「Create」

4-3.「Version Control Workflow」

4-4.作成したGtiHubのProviderを選択

4-5.事前に作成している連携予定のリポジトリを選択

4-6.「Workspace Name」を入力し、「Advanced options」

4-7.「Branch-based」を選択、「VCS branch」に「main」を入力し、「Create」

4-8.Workspacesが作成されたことを確認

5.AWS アクセスキー取得
5-1.AWS - IAM
5-2.「ユーザー」-「ユーザーの作成」

5-3.「ユーザー名」を入力し、「次へ」

5-4.「ポリシーを直接アタッチする」、「AdministratorAccess」を選択し、「次へ」

5-5.「ユーザーの作成」

5-6.作成したユーザーを選択

5-7.「セキュリティ認証情報」タブ、「アクセスキーを作成」

5-8.「コマンドラインインターフェイス(CLI)」を選択、「上記のレコメンデーションを理解し、アクセスキーを作成します。」にチェックを入れ、「次へ」

5-9.「アクセスキーを作成」

5-10.「アクセスキー」と「シークレットアクセスキー」を保存し、「完了」

6.HCP Terraformにアクセスキーを登録
6-1.HPC Terraform - 作成したWorkspaceを開き、「Variables」

6-2.「+ Add variable」

6-3.下記をそれぞれ追加し、「Add variable」
・Select variable category:Environment variable
・Key and Value:
AWS_ACCESS_KEY_ID:取得したアクセスキー
AWS_SECRET_ACCESS_KEY:取得したシークレットアクセスキー
AWS_REGION:ap-northeast-1


7.GitHubへ下記main.tfをPush
7-1.GitBashなどを使いmainブランチへ下記コードをPush
main.tf
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } cloud { organization = "<Your Organization>" workspaces { name = "<Your Workspaces>" } } } provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket" "example" { bucket = "<CreateS3BucketName>" }
8.HCP Terraform Workspaces実行
8-1.HCP Terraform - 作成したWorkspaces
8-2.「Runs」

8-3.「+ New run」

8-4.「Run name」を入力し、「Run Type」に「Plan only」を選択し、「Start」

8-5.Planが完了することを確認

8-6.「+ New run」

8-7.「Run Type」を「Plan and appy(standard)」を選択し、「Start」

8-8.Applyまで完了することを確認



9.AWSリソース作成確認
9-1.AWS - S3 - Bucket
9-2.リソースが作成されていることを確認

感想
1回組むと楽ね(´ω`)