はじめに
最近HCP Terraformの検証を行う機会があり、とりあえず基本機能のHCP TerraformとGithubの連携を行ったので、今更ながらではありますがその紹介をしようと思います。
連携方法
まずはWorkSpaceを設定します。
WorkSpaceを作る段階で、Create a new Workspaceの設定をするところがあります。ここで、Version Control Workflowを選択します。
すると、デフォルトでGitHub Appの項目があるので、それを選びます。
その後、Organizationでユーザー、RepositoryでHCP Terraformで操作を行うリポジトリを選びます。
最後に、WorkSpace名を入力した後にCreateを押下してWorkSpaceを作成します。
実際の動作
以下のEC2インスタンスを作成するTerraformコードをGithubに上げてみます。
data "aws_ami" "this" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["al2023-ami-*-kernel-6.1-x86_64"] # x86_64
}
}
resource "aws_instance" "this" {
ami = data.aws_ami.this.id
instance_type = "t2.medium"
subnet_id = "subnet-0475efaaaaaaaaa"
vpc_security_group_ids = ["sg-0dba481aaaaaaaa"]
tags = {
Name = "kato-terraformcloud-test-${var.pj}"
Owner = "kato"
env = var.pj
terraform_remote_state_test = var.terraform_remote_state_test
}
}
今回はタグにOwner katoを追加する差分を加えていきます。
pushしたことをトリガーとして、以下のようにterraform planがまずは走ります。

その後、その変更をGitHubにてマージします。
すると、HCP Terraformでマージの確認画面が表示されます。このConfirm & applyを押下すると、実際にterraform applyコマンドが実行されます。
以下のように、インスタンスを作り直したことがわかります。
使ってみての感想
planやapplyのタイミングをこちらで好きにできるので、使い勝手は良さそうだと思いました。
ただ、GitHubもプライベートリポジトリが設定できるとは言え、ウェブ上にコードを上げるのは少し不安です・・・。
セルフホストのGitLabや、コードを暗号化しての運用ができるかなどをこれから試してみようと思います。


