terraform-provider-awsを改造してbuildして手元で使う

今年もre:Inventすごかったですね。

AWS re:Invent 2017

At AWS re:Invent 2017, connect with peers and cloud experts, collaborate at our bootcamps, and learn how AWS can improve productivity, security and performance.

さて、「噂の新機能を試したいけど、terraform-provider-awsにまだアノ機能が無いよ(●`ε´●)!!!! 」 て時があると思います。

そこで、terraform-providers/terraform-provider-aws を改造し、buildして手元で使ってみました。

そのときの手順です。

まずお手元に terraform-providers/terraform-provider-aws をご用意ください。

terraform-providers/terraform-provider-aws

terraform-provider-aws - Terraform AWS provider

手順

1. 公式のbuild方法に従いbuildする

make build せい、と書いてあるので、make buildすれば良いです。

$ make build
==> Checking that code complies with gofmt requirements...
go install


2. 出来上がったバイナリを~/.terraform.d/pluginsの下に置く

私の場合は以下のようにコピーしたら読み込んでくれました。

$ cp $GOPATH/bin/terraform-provider-aws ~/.terraform.d/plugins

コピーした後に、利用したいterraformプロジェクトの中で $ terraform init する必要があります。

【追記】 このとき .terraform/plugins/darwin_amd64/ の下に既存のpluginファイルがある場合は、それを消す必要がありました。


3.以上です…!!

以上でpluginが読み込まれると思います。

今思ったのですが、これawsのpluginに限った話じゃないかもしれません 🙊


小ネタ

ちなみに、本当に使われてるかどうかがわからなくなってしまった場合は、

lock.jsonというファイルの中身に、pluginバイナリのSHA256ダイジェストの値が入っているので、それを見ると良いっぽいです! 😊

$ cat .terraform/plugins/darwin_amd64/lock.json
{
  "aws": "b983c8dba51a06bf55f991c6e53342eb1f83c0b96495a3e6a60da25595f09de1",
  "template": "a7a55a3db915e673d43d09ca92b609481f90cdd19520cbd47633002e58fc2d02"
}%

$ shasum -a 256 ~/.terraform.d/plugins/terraform-provider-aws
b983c8dba51a06bf55f991c6e53342eb1f83c0b96495a3e6a60da25595f09de1



✎動作環境

$ go version
go version go1.9.2 darwin/amd64
$ terraform version
Terraform v0.11.0



✎まとめ

Go〜