Pab*_*ero 7 directory structure backend terraform devops
目前,我正在开发一个 azure 基础设施,其中包括以下内容:
我所拥有的一切都在一个main.tf文件中,我知道这是一个错误,但我想从那里开始。我目前正在尝试将每个部分移动到我的回购中自己的子文件夹中。看起来像这样:
terraform-repo/
??? applicationGateway/
? ??? main.tf
? ??? vars.tf
??? appService/
? ??? main.tf
? ??? vars.tf
??? main.tf
??? vars.tfvars
Run Code Online (Sandbox Code Playgroud)
但是,当我在尝试从单个文件结构移动时创建它时,我的远程状态出现问题,它想删除不属于当前处理的子文件夹的任何内容。例如,如果我想运行,terraform apply applicationGateway我将得到以下信息:
# azurerm_virtual_network.prd_vn will be destroyed
Plan: 0 to add, 2 to change, 9 to destroy.
Run Code Online (Sandbox Code Playgroud)
在 terraform repo 中设置多个逻辑上组织的子文件夹的正确方法是什么?或者我是否必须破坏我当前的环境才能像这样设置它?
thi*_*t_p 12
更新 06/2022,完整示例:
假设您有以下目录
./your-folder
|__ main.tf
|__ variables.tf
|__ output.tf
|__ /modules
|__ /module-a
|__ main.tf
|__ variables.tf
|__ output.tf
Run Code Online (Sandbox Code Playgroud)
模块定义在./your-folder/modules/module-a/main.tf:
resource "[resource_type]" "my-module-name" {
...
}
Run Code Online (Sandbox Code Playgroud)
在根main.tf文件中加载模块,因此./your-folder/main.tf:
module "my-module-instance-name" {
source = "./modules/module-a"
other-input-variable = "..."
}
Run Code Online (Sandbox Code Playgroud)
然后告诉 Terraform 在根目录中运行以下命令加载这个新模块(so ./your-folder):
terraform get
Run Code Online (Sandbox Code Playgroud)
然后使用 terraform plan 测试您的设置。
要在子模块中使用根级资源,请将其作为输入变量注入到子模块中。
要使用根模块中的子级资源,请使用输出指令将其从子模块中导出。
希望这可以帮助。:)
Mar*_*k B 11
您看到此问题是因为 terraform 忽略子文件夹,因此根本不再包含这些资源。您需要将子文件夹配置为Terraform Modules,然后将这些模块包含在您的根目录中main.tf
| 归档时间: |
|
| 查看次数: |
8857 次 |
| 最近记录: |