azure - 分割逗号分隔的字符串

标签 azure terraform

我的输出是一个多值、逗号分隔的字符串。

输入.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 生成此错误:

Error reading config for output first_ip: parse error at 1:91: expected "}" but found "["

最佳答案

您可以使用split() function将字符串拆分为列表。

output "output_tf_testap_outbound_ip_addresses" {
  value = ["${split(",", azurerm_app_service.testap.outbound_ip_addresses)}"]
}

之后,您可以使用element(list, index) syntax对其进行索引:

output "first_ip" {
  value = "${element(split(",", azurerm_app_service.testap.outbound_ip_addresses), 0}"
}

您通常还应该能够使用 list\[index\] syntax像这样:

output "first_ip" {
  value = "${split(",", azurerm_app_service.testap.outbound_ip_addresses)[0]}"
}

但是,Terraform 0.11 中似乎存在一个错误,该错误会阻止对 split 函数的结果进行切片,并引发以下错误:

Error: Error loading /tmp/tf-split-test/main.tf: Error reading config for output foo: parse error at 1:25: expected "}" but found "["

您可以使用 local如果您更愿意使用此语法而不是 element 函数,则可以拆分列表,然后对其进行切片以解决此问题。

locals {
  outbound_ip_addresses_list = "${split(",", azurerm_app_service.testap.outbound_ip_addresses)}"
}

output "first_ip" {
  value = "${local.outbound_ip_addresses_list[0]}"
}

关于azure - 分割逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51327865/

相关文章:

c# - 将对象序列化到 Azure Blob 存储

Azure Webjob 未连接到所连接网站的数据库

c# - Azure 文本转语音 API : only mono output formats (no stereo formats) available?

azure - Terraform azurerm_app_service auth_settings 新的 Azure 身份提供程序

terraform - Switch terraform 0.12.6 to 0.13.0 give me provider ["registry.terraform.io/-/null"] 是必需的,但它已被删除

elasticsearch - Terraform:在 ElasticSearch 中设置 max_buckets

git - 各个 git 存储库中的 Terraform Kubernetes 服务定义?

.net - 很抱歉,在执行您的要求时发生了一个错误

node.js - 如何将 Azure Httptrigger 连接到网站?

azure - Terraform 条件参数 block