azure - 拆分逗号分隔的字符串
问题描述
我有一个输出,它是一个多值、逗号分隔的字符串。
输入.tf
resource "azurerm_app_service" "testap" {
name = "MySuperCoolAppServer001"
location = "eastus"
resource_group_name = "notshown"
app_service_plan_id = "notshown"
}
输出.tf
output "output_tf_testap_outbound_ip_addresses" {
value = "${azurerm_app_service.testap.outbound_ip_addresses}"
}
我在控制台中得到了这个:
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]}"]
}
===================== 附录=================
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]}"
}
first_ip 产生了这个错误:
读取输出 first_ip 的配置时出错:在 1:91 解析错误:预期“}”但找到“[”
解决方案
您可以使用该split()
函数将字符串拆分为列表。
output "output_tf_testap_outbound_ip_addresses" {
value = ["${split(",", azurerm_app_service.testap.outbound_ip_addresses)}"]
}
之后,您可以使用以下element(list, index)
语法对其进行索引:
output "first_ip" {
value = "${element(split(",", azurerm_app_service.testap.outbound_ip_addresses), 0}"
}
您通常还应该能够使用如下list\[index\]
语法:
output "first_ip" {
value = "${split(",", azurerm_app_service.testap.outbound_ip_addresses)[0]}"
}
然而,Terraform 0.11 中似乎存在一个错误,该错误会阻止对split
函数的结果进行切片,并引发以下错误:
错误:加载 /tmp/tf-split-test/main.tf 时出错:读取输出 foo 的配置时出错:在 1:25 解析错误:预期为“}”但找到了“[”
local
如果您希望在element
函数上使用此语法,则可以使用 a来拆分列表,然后对其进行切片以解决此问题。
locals {
outbound_ip_addresses_list = "${split(",", azurerm_app_service.testap.outbound_ip_addresses)}"
}
output "first_ip" {
value = "${local.outbound_ip_addresses_list[0]}"
}
推荐阅读
- wso2 - 我们可以在 WSO2 托管 API 端点 URL 中映射版本值吗?
- vba - 如何将子文件夹添加到目录的所有文件夹?
- java - 据说Java会忽略额外的空格。为什么 c=a++ + ++b 没有空格就不能编译?
- python - 在没有页面加载的会话超时时更新表记录
- linux-kernel - uclinux中/proc/pid/status中的slack字段的用途是什么
- sql - 从 SQL Server 检索具有架构名称的所有表和视图名称
- android - Android Instrumentation 测试中的 ClassNotFoundException
- c# - 如何在嵌套响应中获得一对多关系的多个实体?
- nginx - 301重定向后如何在浏览器的url中保留主机头?
- react-native - React Native 最佳推荐框架或文件夹结构最佳实践