[英]AKS connected to an Azure subnet in a private vnet with terraform
[英]terraform Vnet and Subnet Modules
我有一个管道可以下载标准 Terraform 模块并创建资源。
我的问题是,当我第一次启动管道时,我的管道失败了,因为Module-Su.net 给我一条错误消息,指出 .net 不存在。 但是,当我第二次运行相同的管道时,我的 Su.net 部署没有任何问题,就像第一次运行时一样,然后创建了 .net。
我想我有两个解决方案:
Q1。 为什么会这样? 而根据 terraform “大多数时候,Terraform 根据给定的配置推断资源之间的依赖关系” https://learn.hashicorp.com/tutorials/terraform/dependencies如果我编写模块的方式有任何问题?
Q2。 什么是更好的解决方案 depends_on OR introduce wait
Q3. 还有其他方法可以解决吗?
以下是我的模块。
模块资源组/main.tf
resource "azurerm_resource_group" "my-resourcegroup" {
name = format("%s-%s",var.resource_group_name,var.env)
location = var.location
}
模块-.net/main.tf
resource "azurerm_virtual_network" "my-vnet" {
name = format("%s-%s",var.vnet_name,var.env)
resource_group_name = format("%s-%s",var.resource_group_name,var.env)
location = var.location
address_space = var.address_space
}
模块-Su.net/main.tf
resource "azurerm_subnet" "my-subnet" {
for_each = var.subnetsconfig
name = format("%s-%s",each.key,var.env)
address_prefixes = each.value["address_prefixes"]
virtual_network_name = format("%s-%s",var.vnet_name,var.env)
resource_group_name = format("%s-%s",var.resource_group_name,var.env)
}
如果您使用资源的 output 作为另一个资源的输入,那么 Terraform 将把它理解为隐式依赖。 例如(因为您没有发布所有代码):
模块资源组/main.tf
resource "azurerm_resource_group" "my-resourcegroup" {
name = format("%s-%s",var.resource_group_name,var.env)
location = var.location
}
模块-.net/main.tf
resource "azurerm_virtual_network" "my-vnet" {
name = format("%s-%s",var.vnet_name,var.env)
resource_group_name = azurerm_resource_group.my-resourcegroup.name
location = var.location
address_space = var.address_space
}
模块-Su.net/main.tf
resource "azurerm_subnet" "my-subnet" {
for_each = var.subnetsconfig
name = format("%s-%s",each.key,var.env)
address_prefixes = each.value["address_prefixes"]
virtual_network_name = azurerm_virtual_network.my-vnet.name
resource_group_name = azurerm_resource_group.my-resourcegroup.name
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.