使用Terraform local-exec执行多条az cli命令遇表达式报错如何解决
错误根因
- heredoc 起始标记
<<EOT后存在多余空格,Terraform 解析时无法匹配后续的结束标记,直接触发无效表达式报错 - heredoc 内部的 az 命令额外包裹了双引号,后续即使解决语法问题,bash 也会将带引号的整行内容识别为单个可执行文件,触发命令不存在的报错
- 当前写法会保留命令前的缩进空格带入最终执行的脚本,建议使用
<<-EOT缩进兼容写法,Terraform 会自动清除每行前的统一缩进,避免多余空格影响命令执行
修正后配置
resource "null_resource" "eg-role-assignment" { provisioner "local-exec" { interpreter = ["/bin/bash", "-c"] command = <<-EOT az account set --subscription foo az eventgrid topic update --resource-group $RESOURCE_GROUP --name $EVENTGRID_NAME --identity systemassigned EOT environment = { RESOURCE_GROUP = "RG_${var.platform_tag}_${var.product_code}_PUBLISH_${var.environment}_${var.location_code_primary}" EVENTGRID_NAME = "EG-${var.platform_tag}-${var.product_code}-${var.environment}-${var.location_code_primary}-domain" } } }
内容的提问来源于stack exchange,提问作者rb16
相关产品推荐
相关产品推荐

