【问题标题】:Sharing Terraform provider binary across multiple configurations跨多个配置共享 Terraform 提供程序二进制文件
【发布时间】:2023-03-23 01:35:01
【问题描述】:

我正在使用 Terraform 管理 DNS 记录,目前所有区域都由单个目录中的 .tf 文件定义。运行 planapply 将触及每个区域中的每条记录,这会变得太慢并达到提供商的速率限制。

我想按区域拆分配置,因此每个区域都有自己的 Terraform 配置和(远程)状态文件。对区域应用更改只会影响该区域,而不是所有区域。

是否可以在这些单独的配置之间以某种方式共享提供程序二进制文件?它约为 20Mb,我不想将 20 个副本提交到 git 中。符号链接可能有效,但不可移植。

如果有支持此用例的 Terraform 配置(可以独立操作的多个配置),我很想了解它是什么——我找不到任何适合的东西。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    您可以指定 plugin cache directory 让 Terraform 只为特定版本下载一次插件。

    您可以通过设置TF_PLUGIN_CACHE_DIR 环境变量或在Terraform configuration file.terraformrcterraform.rc)中设置plugin_cache_dir 来做到这一点。

    我没有在任何地方看到它记录在案,这可能是 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 构建时间,这将非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2013-05-05
      • 2010-12-14
      • 1970-01-01
      相关资源
      最近更新 更多