【问题标题】:Unexpected EOF - Terraform apply意外的 EOF - Terraform 应用
【发布时间】:2020-02-18 16:23:06
【问题描述】:

我是 Azure/Azure DevOps 和 Terraform 的新手,当我从 Azure DevOps Pipeline 运行 terraform apply 时出现以下错误。

/home/vsts/work/_temp/38418e2b-b5e5-48c1-8579-69d937b85bfc.sh:第 9 行:寻找匹配的“”时出现意外 EOF /home/vsts/work/_temp/38418e2b-b5e5-48c1-8579-69d937b85bfc.sh:第 10 行:语法错误:文件意外结束

这是我试图作为 yaml 管道的一部分执行的脚本。我可以毫无问题地为 UAT 和 Prod 运行相同的代码。

      - script: |
                terraform apply \
                  -auto-approve \
                  -var="client-id=$(client-id)" \
                  -var="client-secret=$(client-secret)" \
                  -var="subscription-id=$(subscription-id)" \
                  -var="tenant-id=$(tenant-id)" \
                  -var="application_name=transport" \
                  -var="environment_tag=dev" \
                  -var="location=northeurope" \
        workingDirectory: './deploy'
        displayName: 'Terraform apply'

【问题讨论】:

  • 内联脚本末尾有一个尾随行继续 `\​​`。
  • @Daniel。感谢您的回复,我已尝试将其删除并运行它,但它仍然会引发相同的错误。
  • 嗨@MattS 你试过下面的答案吗?进展如何?
  • 嗨@Levi,感谢您抽出宝贵时间回复。我在 Ubuntu 代理上运行它。我发现客户端机密中一定有一个字符导致脚本失败。我再次生成了客户端密码,现在错误已经消失了。

标签: azure azure-devops terraform


【解决方案1】:

如果您在 Windows 代理上运行。您可以尝试使用'^'。下面的例子

 - script: |
      terraform apply ^
         -auto-approve ^
         -var="client-id=$(client-id)" ^
          ....

您也可以尝试替换“|”用'>'。

- script: >
    terraform apply \
      -auto-approve \
      -var="client-id=$(client-id)" \

更多信息请查看this thread

【讨论】:

    【解决方案2】:

    今天早上我生成了一个新的客户端密码,脚本运行良好。我猜最后一个秘密中有字符导致这个错误。 我无法解释为什么脚本的 Terraform 初始化部分能够正确执行,因为这也使用了相同的秘密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多