久しぶりに Terraform を使ってたらちょこちょこ変わってたのでメモ。多分前は v0.8 とかを使ってたと思う。
Initialization
以前は terraform をインストールすると AWS とかのプロバイダのプラグインも一緒に入っていて、すぐに使えていたと思うんですが、いつからか terraform init
コマンドでプロバイダのプラグインがインストールされるようになったようです。
例えば次のように AWS のリソースを tf ファイルに書いておくと。
resource "aws_vpc" "test" { cidr_block = "10.1.0.0/16" tags { Name = "test" } }
terraform init
で .terraform/plugins/darwin_amd64/terraform-provider-aws_v0.1.4_x4
のような位置に AWS プロバイダのためのプラグインがインストールされます。
$ terraform init ... snip ... * provider.aws: version = "~> 0.1" ... snip ... $ ls .terraform/plugins/darwin_amd64/terraform-provider-aws_v0.1.4_x4 .terraform/plugins/darwin_amd64/terraform-provider-aws_v0.1.4_x4
後はこれまで通り plan とか apply とかできます。
ちなみにこのファイルはいわゆる実行ファイルなので、実行属性を落とすと動かなくなります。
Mac とかなら大丈夫なんですけど・・・普段 Windows を cifs マウントしている Linux 上で作業している自分にはその仕様はちょっとツライ・・・ mound --bind
とかでどうにか乗り切ってますけど。
Remote Backends
Remote Backend の設定方法も以前から変わっているようで、以前のまま使うと「なんか古いから新しくしいや」みたいなことを言われた気がします。
以前は terrarofm remote
みたいなコマンドでバックエンドを設定する必要があった気がするのですが、今は次のように tf ファイルにバックエンドの情報を書いて、
terraform { backend "s3" { bucket = "oreore-tfstate" key = "oreore.tfstate" } }
terraform init
で設定出来るようです。
複数の作業者で共有すること考えたらこの方が良いですね。
バックエンドを変更したりローカルに戻したりも tf ファイルを修正して terraform init
で良いようです。楽ちん。