Terraform v0.10 でいろいろ変わってた

久しぶりに 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 で良いようです。楽ちん。