Terraform Cloudの始め方を解説します。
5人まで無料で使用できるので、個人利用の場合は、重宝できそうだと思い試してみます。
#アカウント作成
こちらからアカウントを作成してください。
#####主な入力情報
- ユーザ名
- メールアドレス
- パスワード
- 利用規約の同意
- プライバシーポリシーの同意
##メールアドレス認証
こんな感じのメールが送られてくるので、URLをクリックし認証を行います。
Hello,
Please confirm this email address for your Terraform Cloud account by clicking on the link below:
https://app.terraform.io/confirmation?confirmation_token=XXXXXXXXXXXXXXXXXXX
Best,
HashiCorp
##認証完了画面
認証完了です。
※ワークフローの選択がありますが、「サンプル構成で試すか」「自分で一から作るか」の選択になるので、今回は下の「自分で一から作る」かたちで始めます。
##組織の作成
今回は、一人でしか使用しないので、ここは好きな名前でいいと思います。
※会社の場合は、会社名でいいかなと。
#Workspaceを作成
今回は、バージョン管理ワークフローで作成していきます。
##バージョン管理のプロバイダー
今回は、Githubを使用します。
※Github側の認証に入るので、認証を進めてください。
#コードをGitHubにPush
ここからGithubに移ります。
Github上にリポジトリがないと、ワークスペースの作成ができない為、コードをPushしていきます。
・AWS ProviderとVPCを作成するコードをGitHubにPushします。
variable "aws_access_key" {}
variable "aws_secret_key" {}
provider "aws" {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = "ap-northeast-1"
}
resource "aws_vpc" "test-vpc" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "test-vpc"
}
}
##環境変数を追加
IAMユーザのアクセスキーとシークレットキーをTerraform Variablesに設定する。
- aws_access_key
- aws_secret_key
#試しに実行してみる
Queue plan で実行してみる。
##実行結果(Plan)
VPC作成しますよと出ていますね。
##実行結果(Apply)
apply finished しているので、作成できていそうですね。
※デフォルトの設定だとApplyは手動でボタンをクリックすることによってapplyが走ります。
#MainにMerge自動plan & applyをやってみる
Applyを自動実行する設定に変更します。
SettingsからGeneralで、Apply MethodをAuto applyに変更し、Save settingsで保存です。
#Pull Requestを出してみる
サブネットを作成してみます。
まずはテストとしてMulti-AZのSubnetを追加するコードをMainから切った別ブランチ(develop)にPushします。
// 追加コード
resource "aws_subnet" "test-subnet-a" {
vpc_id = aws_vpc.test-vpc.id
cidr_block = "10.0.0.0/28"
availability_zone = "ap-northeast-1a"
tags = {
Name = "test-subnet-a"
}
}
resource "aws_subnet" "test-subnet-c" {
vpc_id = aws_vpc.test-vpc.id
cidr_block = "10.0.0.16/28"
availability_zone = "ap-northeast-1c"
tags = {
Name = "test-subnet-c"
}
}
##実行結果(plan)
Pull Requestを作成すると自動でテスト(terraform plan)が走り、Terraform Cloud上ではこんな感じでテスト(terraform plan)が走っています。
##実行結果(apply)
MainにMergeされると、自動的にapplyされます。
#お片付け
環境のdestroyを実行したい場合、SettingsからDestruction and Deletionで、削除することが可能です。
#まとめ
terraformのバージョン管理など自作で作ると大変な作業でしたが、クラウドサービスをうまく使えば、個人利用の範囲であれば活用できそうです。Terraform Cloudが自動実行されるタイミングはMainの変更とPull Request作成時のみとなっており、もちろんPull Rqeustのときはplanのみの実行で、MainにMergeされない限りapplyは実行されないため、安全なCI/CDが組めそうです。
#終わり