【发布时间】:2021-07-26 13:22:13
【问题描述】:
在以下 YAML 脚本中,我想将 IP 作为 terraform 变量中的列表传递。该变量已在 Terraform 代码中定义为 List。范围是在 Windows 代理 上的 Azure DevOps 管道内运行此 CLI。运行管道时,它失败并显示以下消息:
这意味着 -var='ips=$(ips)' 未正确传递。
我也试过-var="ips=$(ips)"。
我要分配的值是 ["123.456.111","123.456.222"] 的文本
在这种情况下,如何正确地将参数作为 List 传递?
Terraform中变量ips使用的代码我附在下面。
- task: CmdLine@2
displayName: Terraform Plan
inputs:
script: terraform plan -input=false -out=tfplan -var='ips=$(ips)'
workingDirectory: infrastructure/terraform/dev
locals {
}
ips = tolist(toset(var.ips))
feature_flags = {
provision_vm = tobool(var.provision_vm)
provision_webapp = tobool(var.provision_webapp)
}
}
【问题讨论】:
-
它实际上是说变量
ips没有在根模块中声明,而不是它传递不正确。你的(根)模块是什么样子的?更重要的是,您的variables.tf看起来如何,它是否有正确的ips声明?看错误信息我猜不是。 -
我认为有。在 Ubuntu 机器上我没有这个问题。这是声明: variable "ips" { description = "value" type = list default = [""] } 。有什么建议吗?
-
变量声明在
infrastructure/terraform/dev?您在任务定义中设置了一个工作目录,以便将其视为主模块。看起来这是一个特定阶段/环境的模块。但我只是猜测,如果没有看到infrastructure/terraform中的实际 Terraform 代码,SO 上的人将无法进一步提供帮助。 -
是的,infrastructure/terraform/dev 是根目录,包含上面声明的 ips 的 variables.tf
-
还添加了变量在本地使用的地方。
标签: azure azure-devops yaml terraform