Terraform 0.14に上げたところ terraform init
の度、常にプロバイダーのダウンロードがされるようになってしまったので対処方法を調べた。
事象
Terraform 0.13までは terraform init
で TF_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
からロック機構が切り出され、それと共に暗黙的に働いていたキャッシュ機能も失われたようだ。
対応
プロバイダープラグインキャッシュディレクトリを明示する。
.terraformrc
に plugin_cache_dir
を定義するか、
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
環境変数 TF_PLUGIN_CACHE_DIR
を定義してキャッシュディレクトリを明示すれば良い。
export TF_PLUGIN_CACHE_DIR="$HOME/.terraform.d/plugin-cache"