Terraform.11到.12深度嵌套数据的转换
因此,在我的旧.11代码中,我有一个文件,在其中我的输出模块局部变量部分,我正在构建:Terraform.11到.12深度嵌套数据的转换,terraform,Terraform,因此,在我的旧.11代码中,我有一个文件,在其中我的输出模块局部变量部分,我正在构建: this_assigned_nat_ip = google_compute_instance.this_public.*.network_interface.0.access_config.0.assigned_nat_ip-- 这个模块可以创建N个实例。因此,它过去所做的就是在我们创建的所有实例的第一个网络接口上的第一个访问配置块上给我第一个nat ip。(有人在本地编写了代码,所以我们知道只有一个网络
this_assigned_nat_ip = google_compute_instance.this_public.*.network_interface.0.access_config.0.assigned_nat_ip--
这个模块可以创建N个实例。因此,它过去所做的就是在我们创建的所有实例的第一个网络接口上的第一个访问配置块上给我第一个nat ip。(有人在本地编写了代码,所以我们知道只有一个网络接口和一个访问配置块)。
如何将其转换为t12?我不确定保留嵌套的语法
更新:
这里是tf11中的一个地形显示的原始数据块(稍微消毒)
tf12中等效主机的地形显示:
# module.bob.module.bob_gcp_ams.module.atom_d.google_compute_instance.this[1]:
resource "google_compute_instance" "this" {
allow_stopping_for_update = true
network_interface {
name = "nic0"
network = "https://www.googleapis.com/compute/v1/projects/stuff-scratch/global/networks/scratch-public"
network_ip = "10.112.112.6"
subnetwork = "https://www.googleapis.com/compute/v1/projects/stuff-scratch/regions/europe-west4/subnetworks/scratch-europe-west4-x-public-subnet"
subnetwork_project = "stuff-scratch"
access_config {
nat_ip = "35.204.132.177"
network_tier = "PREMIUM"
}
}
scheduling {
automatic_restart = true
on_host_maintenance = "MIGRATE"
preemptible = false
}
}
如果我理解正确,这是一个ip列表。在Terraform 0.12中,您应该能够通过执行以下操作获得相同的结果:
this_assigned_nat_ip = [for i in google_compute_instance.this_public : i.network_interface.0.access_config.0.assigned_nat_ip]
我没有测试is,所以我可能有一些小的语法错误,但是的
是完成这项工作的关键。结果是这个[*].network\u interface[*].access\u config[*].nat\u ip[*]
给了我所需要的。考虑到界面上只有一个地址,结果很好。您能否在问题中包括terraform 0.12upgrade
命令应用于该特定表达式时的结果,以及terraform未能对其求值时看到的完整错误消息?这将有助于理解表达式的哪些部分没有按预期工作,从而了解我们可能如何调整它。这就是输出!“before”查询完全相同,只是它被包装在“${}”中。当您在包含此表达式的配置上运行terraform plan
时发生了什么,这与基于0.11行为预期的情况有何不同?
this_assigned_nat_ip = [for i in google_compute_instance.this_public : i.network_interface.0.access_config.0.assigned_nat_ip]