Terraform启用provider缓存

  我们在开始一个 Terraform 工程项目的时候,首先要做的就是 terraform init, 这个动作会在当前工作目录下创建 .terraform 目录,并联网下载项目所需要的 provider 到该目录下。 即便是多个项目使用的是同样的 provider,但每个工程项目仍然都有自己单独的 .terraform, 这不仅仅会浪费磁盘空间,还会花费很多不必要的时间去等待联网下载 provider,好在 Terraform 官方为我们提供了缓存目录。

配置文件方式(推荐)

  Terraform 和其他诸多命令行工具一样,也可以拥有用户级的配置文件(类似 .vimrc, .npmrc, .zshrc 等),Terraform 的配置文件可以用来定义凭证,provider 缓存目录等。

Windows 下,该文件必须位于 %APPDATA% 下,并被命名为 terraform.rc
macOS 与 Linux 下,该文件位于用户家目录~ 下,命名为 .terraformrc
这里以 Linux 为例:

1
2
3
4
cd ~
# 缓存目录需要提前创建,terraform 不会帮我们创建
mkdir -p mkdir -p ~/.terraform.d/plugin-cache
vim ~/.terrafromrc

内容为:

1
2
plugin_cache_dir   = "$HOME/.terraform.d/plugin-cache"
disable_checkpoint = true

这样配置后,每次 terraform init 都会先去缓存目录下寻找是否存在 provider 的缓存。极大的加速了 init 的过程。

环境变量方式(不推荐)

  同样的,我们可以通过环境变量临时为 Terraform 指定 provider 缓存:

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

文档链接

CLI Configuration File (.terraformrc or terraform.rc)