我正在使用Terraform管理DNS记录,当前所有区域都由单个目录中的.tf文件定义。运行plan
或apply
将触及每个区域中的每条记录,这变得太慢了,并达到了提供商的速率限制。
我想按区域划分配置,因此每个区域都有自己的Terraform配置和(远程)状态文件。将更改应用于区域将仅影响该区域,而不是所有区域。
是否可以在这些单独的配置之间共享提供者二进制文件?它约为20Mb,我不想将其20个副本提交到git中。符号链接可能有效,但不可移植。
如果有一个支持该用例的Terraform配置(可以独立操作的多个配置),我很想了解它的含义-我找不到合适的东西。
答案 0 :(得分:2)
您可以指定plugin cache directory以使Terraform仅针对特定版本的插件下载一次。
您可以通过设置TF_PLUGIN_CACHE_DIR
环境变量或在Terraform configuration file(plugin_cache_dir
或.terraformrc
)中设置terraform.rc
来做到这一点。
我在任何地方都没有看到它的记录,这可能是Terraform将所有提供程序二进制文件折叠成一个二进制文件之前的宿醉(然后在0.11中再次将它们拆分出来),但是Terraform还将在只要适当命名,就与核心Terraform二进制文件位于同一目录。
因此,如果您这样设置计算机:
# ls -l /usr/local/bin/terraform*
-rwxrwxr-x 1 root root 69073632 Mar 20 18:08 /usr/local/bin/terraform
-rwxr-xr-x 1 root root 69884160 Mar 20 18:08 /usr/local/bin/terraform-provider-aws_v1.11.0_x4
-rwxr-xr-x 1 root root 11621440 Mar 20 18:08 /usr/local/bin/terraform-provider-null_v1.0.0_x4
-rwxr-xr-x 1 root root 18291026 Mar 20 18:08 /usr/local/bin/terraform-provider-postgresql_v0.1.0_x4
-rwxr-xr-x 1 root root 11685184 Mar 20 18:08 /usr/local/bin/terraform-provider-random_v1.1.0_x4
-rwxr-xr-x 1 root root 11711744 Mar 20 18:08 /usr/local/bin/terraform-provider-template_v1.0.0_x4
那么Terraform将不会尝试下载这些提供程序和版本的任何二进制文件。
您可以使用terraform-bundle
command下载特定的Terraform版本和提供程序,如果需要在受限的环境中使用Terraform或通过节省每次都必须重新下载提供程序来节省CI构建时间的情况,这将很有用。