背景

最近在查看terraform项目大小时,发现整个文件夹竟然有1.2G

image-20201214203152286

原来是每个小项目都有一个plugins文件夹,里面下载了相同的provider插件,这个插件大小有100多M。

image-20201214203223063

那么,能不能避免每次都下载相同的文件呢?这样一来节省执行terraform init命令的时间,不用下载这么大的插件;另一方面,可以节省项目的空间。


解决方案

参考文档:https://www.terraform.io/docs/commands/cli-config.html

思路很简单——将plugin缓存到公共文件夹,这样每个terraform项目都使用了相同的plugin。


具体操作如下:

mac/linux用户新建一个~/.terraformrc文件,里面内容如下:

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

如果$HOME/.terraform.d/plugin-cache这个目录不存在,要手动新建下。

这样,每次执行terraform init

  • 如果缓存目录里已有对应的插件,直接使用该插件。
  • 如果不存在,先下载到缓存目录。

验证

在某个项目执行terraform init后,发现$HOME/.terraform.d/plugin-cache目录下多出来了对应的plugin文件:

image-20201214204844587


以后,在其他项目目录下执行terraform init后,会直接使用该缓存文件:

image-20201214204947353