Terraformのインストール、およびバージョン確認
Cloud9環境は、デフォルトでTerraformがインストールされています。
terraform.tfstate(リソースの管理ファイル)の管理
terraform.tfstateファイルとは、Terraformの実行に伴って構築されるAWSのインフラ状態を逐次記録しておくためのファイルです。
terraformコマンドを実行すると自動でローカル環境(Cloud9環境)作成されます。
チームで開発を進める場合、ローカルに保存されていると、変更内容を衝突してしまうことを予想されるため、クラウド(AWSのS3など)へ保管し、変更の衝突を避け、チーム間で同時にインフラ構築が行えるようになります。
またローカルでは紛失、欠損時のリカバリーもできなくなる可能性がある為、クラウド上で保管することが望ましいでしょう。
ここではS3バケットにterraform.tfstateファイルを保管する方法を紹介します。
以後、terraformコマンド実行後、自動でクラウド環境上のtfstateファイルが更新されるようになります。
<手順>
1.S3バケットの作成
2.main.tfファイルの作成、実装
3.terraformコマンドの実行(=tfstateファイルのアップロード)
S3バケットの作成
以下を入力し、ユーザ情報とバケットを結び付け、バケットに対する許可する実行アクションを選択します。
<手順>
①Select Type of Policy:S3 Bucket Policy(固定)
②Principal:自分のIAMユーザーのARN
③Actions:ALL Actioncsにチェック
※本来許可するActionは制限すべきだが、ALL Actioncsにチェック
④Amazon Resource Name (ARN):作成したS3バケットのARN
※ARNとは、AWSを一意に識別するリソースネームです。詳細は以下参照。
③Principal
ユーザーのARNをコピーして、そのままPrincilpal欄に入力する
④Amazon Resource Name (ARN)
該当のバケットを選択し、「ARNをコピー」をクリック
⑤Amazon Resource Name (ARN)欄にそのまま入力する。
main.tfファイルの作成、実装
$ mkdir terraform
$ cd terraform
$ touch main.tf
# ----------------------------------
# Terraform versions
# ----------------------------------
terraform {
required_version = ">=1.1"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~>3.0"
}
}
backend "s3" {
bucket = "terraform-prd-tfstate-327495"
key = "terraform.tfstate"
region = "ap-northeast-1"
profile = "terraform"
}
}
# ----------------------------------
# Provider
# ----------------------------------
provider "aws" {
profile = "terraform"
region = var.region
access_key = var.access_key
secret_key = var.secret_key
}
$ touch terraform.tfvars
# terraform.tfvarsを編集
access_key = "自分のアクセスキー"
secret_key = "自分のシークレットキー"
region = "ap-northeast-1"
project = "terraform"
enviroment = "dev"
※注意
アクセスキー、シークレットキーの漏洩防止のため、tfvarsファイルを第三者に知れる場所に絶対に置かないこと。
terraformコマンドの実行(=tfstateファイルのアップロード)
$ terraform init
# 環境の初期化
$ terraform plan
# 変更内容が表示されるため、確認する。
$ terraform apply
# 変更予定内容を反映し、インフラ環境を構築する。
索引ページ
下記でTerraformに関するテーマをまとめて紹介しています。