简体   繁体   English

Terraform - List to String 以创建 azure 订阅列表

[英]Terraform - List to String to create the azure subscription list

I am creating a new custom Azure role and trying to pass all the subscription IDs to the assignable scope argument using the below code but I am having issues converting from list to string with the correct string format.我正在创建一个新的自定义 Azure 角色并尝试使用以下代码将所有订阅 ID 传递给可分配的 scope 参数,但我在使用正确的字符串格式从列表转换为字符串时遇到问题。 Here is the role definition module doc - https://www.terraform.io/docs/providers/azurerm/r/role_definition.html这是角色定义模块文档 - https://www.terraform.io/docs/providers/azurerm/r/role_definition.ZFC35FDC70D5FC69D269883A822C7A5E

Appreciate any inputs or guidance!感谢任何输入或指导!

locals {
 subscription_list  = formatlist("/subscriptions/%s", data.azurerm_subscriptions.all.subscriptions[*].subscription_id)
  quoted_subsciption_list = formatlist("%q", local.sub_list)
}

When I use join function to convert this into a string using the below code, join(",", local.quoted_subsciption_list)当我使用 join function 使用以下代码将其转换为字符串时, join(",", local.quoted_subsciption_list)

I am getting the output as "\"/subscriptions/7yed1028-4525-4533-b608-fb74c2a9c1rr\",\"/subscriptions/7uef9fad-dabf-8icf-8379-a3df99e7613c\",我将 output 获取为"\"/subscriptions/7yed1028-4525-4533-b608-fb74c2a9c1rr\",\"/subscriptions/7uef9fad-dabf-8icf-8379-a3df99e7613c\",

I want the output to be "/subscriptions/7yed1028-4525-4533-b608-fb74c2a9c1rr", "/subscriptions/7uef9fad-dabf-8icf-8379-a3df99e7613c".我希望 output 为“/subscriptions/7yed1028-4525-4533-b608-fb74c2a9c1rr”、“/subscriptions/7uef9fad-dabf-8icf-8379-a3df99e7613c”。 ``` locals { subscription_list = formatlist("/subscriptions/%s", data.azurerm_subscriptions.all.subscriptions[*].subscription_id) quoted_subsciption_list = formatlist("%q", local.sub_list) } ``` locals { subscription_list = formatlist("/subscriptions/%s", data.azurerm_subscriptions.all.subscriptions[*].subscription_id)quoted_subsciption_list = formatlist("%q", local.sub_list) }

When I use join function to convert this into a string using the below code, 
```join(",", local.quoted_subsciption_list)```

I am getting the output as **"\"/subscriptions/7yed1028-4525-4533-b608-fb74c2a9c1rr\",\"/subscriptions/7uef9fad-dabf-8icf-8379-a3df99e7613c\",**

I want the output to be **"/subscriptions/7yed1028-4525-4533-b608-fb74c2a9c1rr", "/subscriptions/7uef9fad-dabf-8icf-8379-a3df99e7613c".**

local.subscription_list is already list(string) which is what azurerm_role_definition's assignable_scopes needs, so you can do this in your azurerm_role_definition resource block: local.subscription_list已经是list(string) ,这是 azurerm_role_definition 的assignable_scopes需要的,因此您可以在azurerm_role_definition资源块中执行此操作:

assignable_scopes = local.subsciption_list

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM