【发布时间】:2022-12-19 11:14:11
【问题描述】:
尝试通过使用 if 条件迭代带有变量的资源来将列表转换为字符串
如何使用资源的 if 条件迭代 for_each 中的变量(列表)
locals {
new_out = flatten([
for opi, clsan in var.module_cl_list : {
opic_R_P = reverse(split("@", "${opi}"))[1]
#op_R = ["WRITE"]
op_R = ["READ","DESCRIBE"]
}
])
}
对于“写入”,它正在工作,因为资源一次为每个变量取一个值
resource "something" "some" {
for_each = {for opi1, clsa1 in local.new_out: opi1 => clsa1}
name = local.new_out_opic_R_P
op_R = join(", ", each.value.op_R)
permission = "ALLOW"
}
对于资源,如果我们想迭代 op_R 变量,["READ","DESCRIBE"],如何迭代地将列表转换为字符串?
输入
如果输入变量是只写的,变量应该被分配为写 如果输入变量是只读的,则应使用“READ”和“Describe”迭代地分配变量
注意:TO = WRITE,RO = READ 和 DESCRIBE例子:-
west = {
name = "random1"
operation = "WRITE"
permission = "ALLOW"
},
west2 = {
name = "random2"
operation = "READ"
permission = "ALLOW"
},
west2 = {
name = "random2"
operation = "DESCRIBE"
permission = "ALLOW"
}
当前代码适用于此变量 op_R = [“写入”]
如果在变量下方给出,它无法处理我需要以迭代方式执行此操作
op_R = [“阅读”,“描述”]
输入
module_cl_list = {
"west@WO" = {appid = "456"},
"west2@RO" = {appid = "123"}
}
错误
当前代码取值为“Read, Describe”,资源每次只取一个值给每个变量
【问题讨论】:
-
你忘了解释当前代码有什么问题?有什么错误吗?意外的输出?
-
可悲的是,它不清楚你想做什么。什么是
var.module_cl_list? -
@Marcin 抱歉,我混淆了我的问题,在描述中提到了输入,我只是想迭代地将列表转换为字符串,目前它抛出错误“需要字符串”
标签: terraform