Terraformの導入(諸々事始め)
新しいプロジェクトが始まる際、GHEのリポジトリは用意したし、次はTerraformを入れる!となった時にやる事を羅列しました。
参考サイトは以下。
それでは始めていきます。
0. 事前準備
・端末の状態確認
$ tfenv list * 0.12.8 (set by /usr/local/Cellar/tfenv/1.0.1/version) 0.12.7 0.12.6 0.11.14 0.11.13
今回は、0.12.8を使用して作成していきます。
1. IAMユーザ作成
terraform で使用するIAMユーザを作成します。ユーザを作成した際はcsvをDLしておくこと。
アクセスの種類:プログラムによるアクセス、マネジメントコンソールによるアクセス 権限:Administorator Access
2. direnv設定
以下に1で作成されたアクセスキーとシークレットアクセスキーを設定する
$ direnv edit . export AWS_ACCESS_KEY_ID=AKIXXXXXXXXXXXX export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX export AWS_REGION=ap-northeast-1
すると、.envrcファイルが作成され、上記で設定した内容が記載される。
これを行うことでそのディレクトリで使用するクレデンシャルをセットすることができる。
くれぐれもgitの対象にしないように注意する。
$ ls -la total 16 drwxr-xr-x 5 XXX YYY\Domain Users 160 4 27 15:58 . drwxr-xr-x 14 XXX YYY\Domain Users 448 4 27 12:01 .. -rw-r--r-- 1 XXX YYY\Domain Users 149 4 27 15:58 .envrc drwxr-xr-x 12 XXX YYY\Domain Users 384 4 27 12:03 .git -rw-r--r-- 1 XXX YYY\Domain Users 29 4 27 12:02 README.md $
3. TFファイル環境設定
必要なtfファイル設定を入れるため、目的ごとに以下のtfファイルを作成する。
.terraform-versionファイル
以下の通り、バージョン指定するファイル
$ cat .terraform-version 0.12.8
terraform.tfファイル
プロバイダーを指定したり、バックエンド処理を記載(これによってtfstateが指定したバケットに保存、更新されるようになる)
provider "aws" { region = "ap-northeast-1" } terraform { required_version = "0.12.8" backend "s3" { bucket = "<バケット名>" key = "ap-northeast-1/terraform.tfstate" region = "ap-northeast-1" } }
4. Terraform 初期化
以下コマンドで初期化する。
$ terraform init Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "aws" (hashicorp/aws) 2.59.0... The following providers do not have any version constraints in configuration, so the latest version was installed. To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below. * provider.aws: version = "~> 2.59" Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary
上記のように成功すると、以下のように.terraformファイルが出来上がる。これでディレクトリがterraform管理下になった。
$ ls -la total 16 drwxr-xr-x 5 XXX YYY\Domain Users 160 4 27 15:58 . drwxr-xr-x 14 XXX YYY\Domain Users 448 4 27 12:01 .. -rw-r--r-- 1 XXX YYY\Domain Users 149 4 27 15:58 .envrc drwxr-xr-x 12 XXX YYY\Domain Users 384 4 27 12:03 .git drwxr-xr-x 3 XXX YYY\Domain Users 96 4 27 16:32 .terraform -rw-r--r-- 1 XXX YYY\Domain Users 7 4 27 16:21 .terraform-versi -rw-r--r-- 1 XXX YYY\Domain Users 29 4 27 12:02 README.md -rw-r--r-- 1 XXX YYY\Domain Users 47 4 27 16:32 terraform.tf $
続いて、次はようやくAWSサービス作成用のtfファイルを書いていきます!
< 番外編 >
Read.meにこんな記載しておくと便利かも
pj_<Progect_Name>
Install Terraform
Use tfenv.
$ tfenv install
Set environment variables
Use dienv.
$ direnv edit . export AWS_ACCESS_KEY_ID=AKIXXXXXXXXXXXX export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX export AWS_REGION=ap-northeast-1
Initialize Terraform
$ terraform init
Edit Terraform files
Happy Coding!!
plan
$ terraform plan
apply
$ terraform apply