我们希望能够在各种不同的云提供商中创建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重用指定文件夹中的现有插件?
答案 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
使用此选项时,仅给定目录中的插件可用。这使系统管理员可以对执行环境进行高度控制,但另一方面,它可以防止使用尚未安装在本地插件目录中的较新的插件版本。哪种方法更合适取决于每个组织内部的独特约束。