【问题标题】:terraform .% and .# and <computed> meaningterraform .% 和 .# 和 <computed> 的含义
【发布时间】:2018-04-11 12:58:52
【问题描述】:
在创建资源并调用 terraform plan 时,我看到如下名称:
tags.%: "" => "1"
dns_servers.#: <computed>
我想知道 .% 和 .# 是什么意思; "" => "1" 值对 tags 意味着什么。%
另外,computed 值真正代表什么?
【问题讨论】:
标签:
terraform
terraform-provider-azure
【解决方案1】:
tags.%: 指资源的tags 属性的部分数。
"" => "1" 表示这些部分的数量从应用前的undefined 变为应用后的1。在此示例中,这可能意味着当前没有标签,如果您应用,将有 1 个标签。一般来说,计划中的"foo" => "bar" 表示 Terraform 检测到该值当前为“foo”,并且在应用此计划后它将为“bar”。
dns_servers.# 表示dns_servers 属性有多个部分,并且此行引用由该唯一编号标识的特定部分。例如,如果您制作多个标签,则可能有多个标签tag.1、tag.2等。这个编号由提供者决定。
<computed> 表示在实际申请之前无法知道该值。例如,您创建一个 EIP 和一个使用该 EIP 的 EC2 实例,Terraform 会将 EIP 的 allocation_id 显示为 <COMPUTED>,因为在创建它之前您无法知道这一点(即它是在创建 EIP 时从 AWS 返回的)。 Terraform 旨在在单次运行中收敛(即,您无需多次运行apply 即可获得最终结果),为此目标的权衡是在资源被分配之前您不会在terraform plan 中看到这些值已创建。