一 月
21
木曜日
2021

Terraform 0.14: initで常にプロバイダーがダウンロードされる

Terraform 0.14に上げたところ terraform init の度、常にプロバイダーのダウンロードがされるようになってしまったので対処方法を調べた。 


事象

Terraform 0.13までは terraform initTF_DATA_DIR ( .terraform )配下にプロバイダーをダウンロード、二回目以降はダウンロード済のプロバイダーを利用していた。

0.14では init の度、常にプロバイダーをダウンロードしTF_DATA_DIR 配下に配置(上書き)する挙動に変わっており、このため160MBほどあるawsプロバイダーを毎度ダウンロードしていた。

原因

GitHub Issue #27155が上がっている。

0.14で入ったDependency Lock Fileの影響のようだ。

従来の TF_DATA_DIR は依存関係のロック機構として役割を担っていたが、それは暗黙的なキャッシュ機構という側面も持ち合わせていた。
0.14でのロックファイル導入により、TF_DATA_DIR からロック機構が切り出され、それと共に暗黙的に働いていたキャッシュ機能も失われたようだ。

対応

プロバイダープラグインキャッシュディレクトリを明示する。

.terraformrcplugin_cache_dir を定義するか、

 plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"

環境変数 TF_PLUGIN_CACHE_DIR を定義してキャッシュディレクトリを明示すれば良い。

export TF_PLUGIN_CACHE_DIR="$HOME/.terraform.d/plugin-cache"