可以映射变量包含不同类型

时间:2019-09-11 07:50:52

标签: terraform

我们可以传递具有多种var类型的map变量吗? lists[]strings

identity = {
    type = var.identity.type    
    identity_ids = var.identity.identity_ids
}

正在处理WebApp模块,在该模块中我需要传递托管用户身份的条件值。

身份块支持以下内容:

type-(必需)指定App Service的身份类型。可能的值是SystemAssigned(Azure将为您生成服务主体),UserAssigned(您可以在identity_ids字段中指定服务主体ID)以及SystemAssigned,UserAssigned(它既分配系统管理的身份,也分配指定的用户分配的身份)。

identity = {
    type = var.identity.type    
    identity_ids = var.identity.identity_ids
}

1 个答案:

答案 0 :(得分:0)

Terraform语言文档包括Type Constraints部分,该部分描述了指定模块变量可接受的值类型的不同方法。

您要在此处查找的类型是 object 类型,它与映射类型不同,它指定了一组确切的必需属性以及每个属性具有哪些类型。对象类型是两个structural type kinds中的一种,并且与其他一些语言中的public/VERSION.txt类型大致相似。您的Perhaps this.active = data.active || true?变量示例可以这样声明:

struct

我们通常用于构造映射的identity语法实际上是对象值构造函数;只要所有元素类型都是同类的,对象值就可以自动转换为映射值。因此,只要variable "identity" { type = object({ type = string identity_ids = list(string) }) } 是一个字符串,而{ ... }是一个字符串列表,上面的示例将接受您在示例中显示的表达式。