在 terraform repo 中设置多个逻辑组织的子文件夹的正确方法是什么?
What is the correct way to setup multiple logically organized sub folders in a terraform repo?
目前我正在开发一个包含以下内容的 Azure 基础设施:
- 资源组
- 应用网关
- 应用服务
- 等等
我所有的东西都在一个 main.tf
文件中,我知道这是一个错误,但我想从那里开始。我目前正在尝试将每个部分移动到我的回购协议中它自己的子文件夹中。看起来像这样:
terraform-repo/
├── applicationGateway/
│ ├── main.tf
│ ├── vars.tf
├── appService/
│ ├── main.tf
│ └── vars.tf
├── main.tf
└── vars.tfvars
但是,当我在尝试从单个文件结构移出时创建它时,我的远程状态出现问题,它想要删除不属于当前工作子文件夹的任何内容。
例如,如果我想 运行 terraform apply applicationGateway
我将得到以下内容:
# azurerm_virtual_network.prd_vn will be destroyed
Plan: 0 to add, 2 to change, 9 to destroy.
在 terraform 存储库中设置多个逻辑组织的子文件夹的正确方法是什么?或者我是否必须破坏我当前的环境才能像这样设置它?
您看到此问题是因为 terraform 忽略了子文件夹,因此根本不再包含这些资源。您需要将子文件夹配置为 Terraform Modules,然后将这些模块包含在根 main.tf
中
以这种方式维护 DRY 环境的一个选项是使用 Terragrunt
Terragrunt 是 Terraform 的包装器,它允许以与 Terraform 处理环境略有不同的方式组织和重用组件。
目前我正在开发一个包含以下内容的 Azure 基础设施:
- 资源组
- 应用网关
- 应用服务
- 等等
我所有的东西都在一个 main.tf
文件中,我知道这是一个错误,但我想从那里开始。我目前正在尝试将每个部分移动到我的回购协议中它自己的子文件夹中。看起来像这样:
terraform-repo/
├── applicationGateway/
│ ├── main.tf
│ ├── vars.tf
├── appService/
│ ├── main.tf
│ └── vars.tf
├── main.tf
└── vars.tfvars
但是,当我在尝试从单个文件结构移出时创建它时,我的远程状态出现问题,它想要删除不属于当前工作子文件夹的任何内容。
例如,如果我想 运行 terraform apply applicationGateway
我将得到以下内容:
# azurerm_virtual_network.prd_vn will be destroyed
Plan: 0 to add, 2 to change, 9 to destroy.
在 terraform 存储库中设置多个逻辑组织的子文件夹的正确方法是什么?或者我是否必须破坏我当前的环境才能像这样设置它?
您看到此问题是因为 terraform 忽略了子文件夹,因此根本不再包含这些资源。您需要将子文件夹配置为 Terraform Modules,然后将这些模块包含在根 main.tf
以这种方式维护 DRY 环境的一个选项是使用 Terragrunt
Terragrunt 是 Terraform 的包装器,它允许以与 Terraform 处理环境略有不同的方式组织和重用组件。