terraformのtemplateでつまって解決した話
他の記事でもよく見かけるが、M3 Macでもtemplateの事象に引っかかったので、行った対処を記述していきます。
事象
terraform でtemplate を利用している箇所があり、 terraform init
がうまくいかなった。
terraform は brew install tfenv
でcli インストールを行っており、バージョンは v1.6.5
を使用している。
$ terraform version
Terraform v1.6.5
on darwin_arm64
対処
大きな対処としては2つ実施した。
-
.terraform.lock.hcl
からtemplateのブロックを削除 - template plugin をソースコードからビルド
template のソースは以下のリポジトリをcloneした。
1つ目の .terraform.lock.hcl
からtemplateのブロックを削除したのは特別大変な話ではないので、該当ファイルを見つけて対処してください。
2つ目のtemplate をソースコードからビルドの手順のほうが参考になると思うので、以下の手順を参考にしてください。
template のビルド
まず、適当なディレクトリにcloneしてbuildします。
cd somewhere/
git clone git@github.com:hashicorp/terraform-provider-template.git
cd terraform-provider-template
make build
ここでgo がないとエラーになったので、 brew install
でgo をインストールします。
brew install go
go version
# go version go1.22.3 darwin/arm64
Repository 内のREADME を読んだ感じでは、 1.11+
になっているので、ひとまずこのまま進めました。
buildするとプラグインは GOPATH
配下に置かれます。なので、 GOPATH
が設定されているかを確認します。
echo $GOPATH
何も出力されません。だいぶ昔にGoを追っていた知識で GOROOT
とか GOPATH
を環境変数に設定するんだっけ?と記憶していたのですが、浦島太郎状態になっていました。今は go env
で GOPATH
などの変数が閲覧できるようになっているみたいですね。便利。
go env GOROOT
go env GOPATH
なので、こbuild したあとに GOPATH
配下を参照します。
make build
ls $(go env GOPATH)/bin/
terraform-provider-template
この terraform-provider-template
をplugin のパスにコピーします。
cp $(go env GOPATH)/bin/terraform-provider-template ~/.terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64
そのあとに terraform init
した結果、うまく動作しました。
まとめ
ひとまず対処できました。
とはいえ、 terraform-provider-template
のRepository をみたらわかる通り、public archive になっているし、適切な書き方は他にありそうなので、暫定的な対応としてなにかの参考になればと思います。
Discussion