【问题标题】:How to run multiple commands using terraform local-exec如何使用 terraform local-exec 运行多个命令
【发布时间】:2021-08-27 17:30:58
【问题描述】:

我正在尝试使用 terraform 使用 local-exec 配置程序运行一些 az cli 命令,但我一直遇到以下错误:

Error: Invalid expression

On modules/eventgrid/main.tf line 68: Expected the start of an expression, but
found an invalid expression token.

这是我的代码:

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"

    }
  
  }
}

谁能指导我怎么回事?

【问题讨论】:

    标签: terraform azure-cli terraform-provider-azure


    【解决方案1】:

    使用您的&lt;&lt;EOT 语句,您已经在字符串文字中,因此您不需要引号。此外,&lt;&lt;-EOT(带有破折号)可以识别缩进,而&lt;&lt;EOT 则不能。

    最后,作为问题的原因,EOT 后面有一个空格。

    command = <<-EOT
              az account set --subscription foo
              az eventgrid topic update --resource-group $RESOURCE_GROUP --name $EVENTGRID_NAME --identity systemassigned
    EOT
    

    【讨论】:

    • 你好@Dan Monego!谢谢你的建议。但是,我仍然遇到同样的问题。还有什么我可能会错过的吗?
    • 啊!你的heredoc锚上有一个额外的空间-&lt;&lt;-EOF 而不是&lt;&lt;-EOF。这是根本问题。
    • 答案已更新以删除多余的空格。
    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2019-08-20
    • 2021-07-21
    • 2019-09-21
    • 2020-01-02
    • 2023-03-06
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多