我的输出是一个多值、逗号分隔的字符串。
resource "azurerm_app_service" "testap" {
name = "MySuperCoolAppServer001"
location = "eastus"
resource_group_name = "notshown"
app_service_plan_id = "notshown"
}
Run Code Online (Sandbox Code Playgroud)
output "output_tf_testap_outbound_ip_addresses" {
value = "${azurerm_app_service.testap.outbound_ip_addresses}"
}
Run Code Online (Sandbox Code Playgroud)
我在控制台中得到这个:
output_tf_testap_outbound_ip_addresses = 1.2.3.4,1.2.3.5,1.2.3.6,1.2.3.7,1.2.3.8,1.2.3.9
如何获取列表中的第一项?在这种情况下,我试图隔离该值:
1.2.3.4
当运行时之前未知项目总数时,有没有办法获得所有项目的“集合”?(上面的列表有 6 项)。
下面的代码似乎不起作用:
output "first_ip" {
value = ["${azurerm_app_service.testap.outbound_ip_addresses[0]}"]
}
Run Code Online (Sandbox Code Playgroud)
===================== 附加 =================
first_ip_no_index 有效。first_ip 没有
output "first_ip_no_index" {
value = ["${split(",", azurerm_app_service.tf_middle_tier_azurerm_app_service.outbound_ip_addresses)}"]
}
output "first_ip" {
value = "${split(",", azurerm_app_service.tf_middle_tier_azurerm_app_service.outbound_ip_addresses)[0]}"
}
Run Code Online (Sandbox Code Playgroud)
first_ip 生成此错误:
读取输出first_ip的配置时出错:在1:91处解析错误:预期为“}”,但发现了“[”
您可以使用该split()
函数将字符串拆分为列表。
output "output_tf_testap_outbound_ip_addresses" {
value = ["${split(",", azurerm_app_service.testap.outbound_ip_addresses)}"]
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用以下element(list, index)
语法对其进行索引:
output "first_ip" {
value = "${element(split(",", azurerm_app_service.testap.outbound_ip_addresses), 0}"
}
Run Code Online (Sandbox Code Playgroud)
您通常还应该能够使用如下list\[index\]
语法:
output "first_ip" {
value = "${split(",", azurerm_app_service.testap.outbound_ip_addresses)[0]}"
}
Run Code Online (Sandbox Code Playgroud)
然而,Terraform 0.11 中似乎存在一个错误,该错误会阻止对函数结果进行切片split
,并引发以下错误:
错误:加载 /tmp/tf-split-test/main.tf 时出错:读取输出 foo 的配置时出错:在 1:25 处解析错误:预期为“}”,但发现了“[”
如果您更愿意使用此语法而不是函数,则可以使用 alocal
来拆分列表,然后对其进行切片来解决此问题element
。
locals {
outbound_ip_addresses_list = "${split(",", azurerm_app_service.testap.outbound_ip_addresses)}"
}
output "first_ip" {
value = "${local.outbound_ip_addresses_list[0]}"
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7549 次 |
最近记录: |