※ 個人的なメモ
(事後なので抜けあるかも...)
AWS現環境をterraformのコードで管理する
前提
- AWSリソース作成済み
- aws configure、terraform、terraformerの準備、インストールができている
やること
- AWSの現環境をterraformerを使用してコード化
- コード化したterrafomerのコードをtfファイルを作成して、AWSリソースと紐づける
- terraformを使用してAWSリソースの変更をしてみる
- tfstateの管理場所をlocalからs3に変更する
AWSの現環境をterraformerを使用してコード化
AWSリソースをterraformerを使用してコード化する
- 下記はS3の例
$ terraformer import aws --resources=s3 --regions=ap-northeast-1 --profile=default
.
├── README.md
├── generated
│ └── aws
│ └── s3
│ ├── outputs.tf
│ ├── provider.tf
│ ├── s3_bucket.tf
│ ├── s3_bucket_policy.tf
│ └── terraform.tfstate
コード化したterrafomerのコードをtfファイルを作成して、AWSリソースと紐づける
- terrafomr importを使用して紐づける
- ./s3.tfを作成して、./generated/aws/s3/s3_bucket.tfのコードを任意のリソースをコピーして貼り付ける
// tfファイルにこのように書かれている場合下記のように指定する (resource "aws_s3_bucket" "hoge" {...})
$ terraform import aws_s3_bucket.hoge {紐づけたいS3バケット名}
terraformを使用してAWSリソースの変更をしてみる
- 適当にコードを編集
// false→trueに変更
force_destroy = "true"
- terraform planで差分確認
$ terraform plan
- terraform applyで差分を反映、反映前に差分確認が入るので
yes
と打つ
$ terraform apply
tfstateの管理場所をlocalからs3に変更する
- main.tfに下記を追記
terraform {
backend "s3" {
bucket = "matsui-backend-tfstate" // tfstateを管理するバケット名
key = "terraform.tfstate" // tfstateのファイル名
region = "ap-northeast-1"
}
}
- その後、terraform initを実行し、localに配置しているtfstateをS3にコピーするか聞かれるので
yes
と打つ
$ terraform init