Terraform Azure Devops 创建固件规则
Terraform Azure Devops Create fw rules
我苦思冥想 Terraform + azure devops 流程的组合,并想出解决这个问题的最佳策略,
我有 3 个阶段,用于构建和部署一些 Terraform 代码
- 第 1 阶段构建: 个别服务,例如sql 服务器、数据库、应用程序服务 terraform 计划工件文件夹路径:
terraform\phase1\main.tf .... etc
- Stage2 部署: 来自 stage1 的工件
terraform apply
- Stage3 构建和部署管道:获取 outbound ip addresses from the deployed azure app service via the tfstate back-end using
data "azurerm_app_service" "this"
and add these to the sql server firewall allowed ip's 文件夹路径:terraform\phase2\main.tf .... etc.
当我查看 phase2 文件夹时,我的问题出现在第 3 阶段,该文件夹仅定义了 fw 规则的数据输出和资源创建,尽管我们正在查看相同的后端状态文件,但 terraform plan 看不到任何资源在文件夹中的 stage2 中创建,因此计划将其销毁。
在 Phase2 文件夹中,我的代码看起来像这样
data "azurerm_app_service" "tf_dr_awa_core-app" {
name = "dr-core-app"
resource_group_name = "dr-app"
}
resource "azurerm_sql_firewall_rule" "tf_dr_sql_server_firewall" {
count = length(split(",", data.azurerm_app_service.tf_dr_awa_core-app.possible_outbound_ip_addresses))
.....
}
有没有人遇到过类似的事情,你必须首先构建基础设施的核心部分,一旦他们在状态文件中有元数据,然后获取该数据并在核心部分之间构建管道,在这种情况下 sql 服务器和应用程序服务?
现在我已经回答了关于 Stage3 的问题,我只针对特定资源,因此它不关心 phase2 文件夹中最初从 Phase1 文件夹在 Stage2 中创建的所有其他缺失项目
文件夹布局:
─tf-dr
├───phase1
│ main.tf
│ provider.tf
│ variables.tf
└───phase2
main.tf
provider.tf
variables.tf
管道布局
- 阶段 1 构建阶段 1
- Stage2 等待 Stage1 中的应用完成并构建针对资源的 Phase2 和与 Stage1 相同的状态文件,只是为了提取应用程序服务的 IP
- Stage3 从 Stage2 获取构建并应用它
我苦思冥想 Terraform + azure devops 流程的组合,并想出解决这个问题的最佳策略,
我有 3 个阶段,用于构建和部署一些 Terraform 代码
- 第 1 阶段构建: 个别服务,例如sql 服务器、数据库、应用程序服务 terraform 计划工件文件夹路径:
terraform\phase1\main.tf .... etc
- Stage2 部署: 来自 stage1 的工件
terraform apply
- Stage3 构建和部署管道:获取 outbound ip addresses from the deployed azure app service via the tfstate back-end using
data "azurerm_app_service" "this"
and add these to the sql server firewall allowed ip's 文件夹路径:terraform\phase2\main.tf .... etc.
当我查看 phase2 文件夹时,我的问题出现在第 3 阶段,该文件夹仅定义了 fw 规则的数据输出和资源创建,尽管我们正在查看相同的后端状态文件,但 terraform plan 看不到任何资源在文件夹中的 stage2 中创建,因此计划将其销毁。
在 Phase2 文件夹中,我的代码看起来像这样
data "azurerm_app_service" "tf_dr_awa_core-app" {
name = "dr-core-app"
resource_group_name = "dr-app"
}
resource "azurerm_sql_firewall_rule" "tf_dr_sql_server_firewall" {
count = length(split(",", data.azurerm_app_service.tf_dr_awa_core-app.possible_outbound_ip_addresses))
.....
}
有没有人遇到过类似的事情,你必须首先构建基础设施的核心部分,一旦他们在状态文件中有元数据,然后获取该数据并在核心部分之间构建管道,在这种情况下 sql 服务器和应用程序服务?
现在我已经回答了关于 Stage3 的问题,我只针对特定资源,因此它不关心 phase2 文件夹中最初从 Phase1 文件夹在 Stage2 中创建的所有其他缺失项目
文件夹布局:
─tf-dr
├───phase1
│ main.tf
│ provider.tf
│ variables.tf
└───phase2
main.tf
provider.tf
variables.tf
管道布局
- 阶段 1 构建阶段 1
- Stage2 等待 Stage1 中的应用完成并构建针对资源的 Phase2 和与 Stage1 相同的状态文件,只是为了提取应用程序服务的 IP
- Stage3 从 Stage2 获取构建并应用它