【发布时间】:2021-09-14 10:18:07
【问题描述】:
我遇到了一个问题,即 Terraform 尝试更改由 DeployIfNotExists 策略部署的资源。此策略会自动为专用终结点 (source) 创建一个 DNS 条目。通常,我会使用ignore_changes,但这仅适用于首先由 Terraform 部署的资源,然后将忽略 Terraform 之外的所有未来更改。
如何在没有 private_dns_zone_group 的情况下部署专用终结点,以防止将来的任何部署删除由 Azure 策略部署的 private_dns_zone_group?
resource "azurerm_private_endpoint" "private_endpoint" {
name = var.private_endpoint_name
location = var.location
resource_group_name = var.resource_group_name
subnet_id = var.private_subnet_id
private_service_connection {
name = var.private_service_connection_name
is_manual_connection = false
private_connection_resource_id = azurerm_app_service.app_service.id
subresource_names = ["sites"]
}
# This cannot be included, otherwise the DeployIfNotExists policy will not run
# private_dns_zone_group {
# name = "deployedByPolicy"
# private_dns_zone_ids = []
# }
lifecycle {
ignore_changes = [
private_dns_zone_group
]
}
}
【问题讨论】:
-
如果你只是从你的代码中删除块它不起作用?
private_dns_zone_group块是可选的,因此只需省略它,您就可以创建您的 pe,而无需通过 terraform 将其添加到 dns 区域 -
当你不部署它时,它会在Azure使用策略创建它时被删除。
-
奇怪的是我不知道!您是否还通过 terraform 管理
azurerm_private_dns_zone?您认为这可能是导致问题的原因吗?奇怪的是,terraform 会通过省略私有 dnz 区域组来了解私有 dns 区域中存在的内容。 -
azurerm_private_dns_zone 不受 terraform 管理,它在中心订阅(云采用框架)内。所以私有 dns 区域组是问题所在,它始终是私有端点的子资源。
标签: azure terraform azure-policy azure-private-dns-zone