首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >terraform中一个资源的互斥属性

问terraform中一个资源的互斥属性
EN

Stack Overflow用户
提问于 2021-08-23 04:20:34
回答 1查看 86关注 0票数 1

我需要一些帮助,我正在尝试为azure ACI容器实例编写一个模块。我发现dns_name_label和network_profile_id这两个属性是互斥的。如果我将ip_address_type设置为public,我想使用dns_name_label,但network_profile_id不能使用相同的脚本,反之亦然;如果我将ip_address_type设置为私有,我必须定义network_profile_id,但dns_name_label不能使用脚本

如果同时包含dns_name_label和network_profile_id,在ip_address_type上会怎样呢?

代码语言:javascript
复制
resource "azurerm_container_group" "this" {
  name                = var.name
  location            = var.location
  resource_group_name = var.resource_group_name
  ip_address_type     = var.ip_address_type
  dns_name_label = var.ip_address_type =="Public"&&length(var.dns_name_label)> 0 ? var.dns_name_label :""
   os_type            = var.os_type
  restart_policy     = var.restart_policy
  network_profile_id = var.ip_address_type == "Private" ? azurerm_network_profile.this[0].id : ""

}

注意上面的代码不起作用,我得到了错误

代码语言:javascript
复制
"network_profile_id": conflicts with dns_name_label
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-23 04:24:53

您可以使用null而不是"",如果将null设置为其值,则将从资源中删除该属性:

代码语言:javascript
复制
resource "azurerm_container_group" "this" {
  name                = var.name
  location            = var.location
  resource_group_name = var.resource_group_name
  ip_address_type     = var.ip_address_type
  dns_name_label = var.ip_address_type =="Public"&&length(var.dns_name_label)> 0 ? var.dns_name_label : null
   os_type            = var.os_type
  restart_policy     = var.restart_policy
  network_profile_id = var.ip_address_type == "Private" ? azurerm_network_profile.this[0].id : null
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68887263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档