あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

【Terraform】HCP TerraformでVCSドリブンを使ってみた


HCP TerraformでVCSドリブンを使ってみた

やること

GitHubとHCP Terraformを連携させ、VCSドリブン(VCSへの変更をトリガーにHCP TerraformのWorkspacesを起動)を設定。

前提

HCP TerraformでOrganizationを作成済みであること
GitHubGitHub.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回組むと楽ね(´ω`)