有关结构Terraform模板和文件夹的建议

时间:2018-10-24 15:20:47

标签: terraform

我们希望能够在各种不同的云提供商中创建VM(和相关资源)。

因此,我们最终将为不同的云提供商使用不同的模板。 当前结构

|_terraform
    |_azure
    |     |_vm
    |        |_module
    |        |_testazurevm1
    |        |    |_.terraform
    |        |         |_plugins
    |        |         |_modules
    |        |_testazurevm2
    |        |    |_.terraform
    |        |         |_plugins
    |        |         |_modules
    |        |_...
    |            |_.terraform
    |                 |_plugins
    |                 |_modules
    |___aws
    |     |_vm
    |        |_module
    |        |_testawsvm1
    |        |    |_.terraform
    |        |         |_plugins
    |        |         |_modules
    |        |_testawsvm2
    |        |    |_.terraform
    |        |         |_plugins
    |        |         |_modules
    |        |_...
    |            |_.terraform
    |                 |_plugins
    |                 |_modules
    |____....

这是一种工作,但是每次我们在其中一个子文件夹中执行terraform初始化/应用时,它总是创建一个新的.terraform子文件夹,其中包含提供程序的二进制可执行文件和对模块的引用链接。

当我们要拥有成百上千个VM时,我们将在每个VM / .terraform / plugins文件夹中拥有这些可执行文件。

有没有办法告诉terraform重用指定文件夹中的现有插件?

1 个答案:

答案 0 :(得分:1)

经过研究,我发现terraform init具有-plugin-dir开关,它使我们可以指定一个文件夹,可以在其中预先下载插件。

因此我们不必将可执行插件二进制文件检入源代码控制中。

在以下内容中提及: https://www.terraform.io/guides/running-terraform-in-automation.html

terraform init -input=false -plugin-dir=/usr/lib/custom-terraform-plugins

使用此选项时,仅给定目录中的插件可用。这使系统管理员可以对执行环境进行高度控制,但另一方面,它可以防止使用尚未安装在本地插件目录中的较新的插件版本。哪种方法更合适取决于每个组织内部的独特约束。