Terraform AZ CLI本地exec命令限制

问题描述

我正在尝试在我的AKS群集基础结构之外的Terraform中运行offset AZ cli命令,以自动完成繁琐的任务。其中一种正在运行az vmsss extention set命令以将证书添加到每个节点。为此,我在本地exec供应器中使用了空资源。这是我正在使用的AZ cli命令。

我想利用的命令部分和Terraform不喜欢的部分是带有卷曲的'{"commandToExecute":...}'

我想做的事的例子:

resource "null_resource" "test" {

  provisioner "local-exec" {
    command = "az vmss extension set --vmss-name my-vmss --name customScript --resource-group my-group version 2.0 --publisher Microsoft.Azure.Extensions provision-after-extensions NetworkWatcherAgentLinux VMAccessForLinux  settings '{"commandToExecute": "echo testing"}'"
  }
} 

结果:

Error: Missing newline after argument

  on test.tf line 3,in resource "null_resource" "test":
 3:     command = "az vmss extension set --vmss-name my-vmss --name customScript --resource-group my-group version 2.0 --publisher Microsoft.Azure.Extensions provision-after-extensions NetworkWatcherAgentLinux VMAccessForLinux  settings '{"commandToExecute": "echo testing"}'"

An argument definition must end with a newline.

是否有任何已知的解决方法能够使用local-exec提供程序运行更复杂的命令?

Terraform版本:0.13

解决方法

对于遇到此问题的其他人,感谢@Nancy Xiong,这就是您使用heredoc样式进行操作的方式...

resource "null_resource" "test" {

  provisioner "local-exec" {
    command = <<EOT
    az vmss extension set --vmss-name my-vmss --name customScript --resource-group my-group version 2.0 --publisher Microsoft.Azure.Extensions provision-after-extensions NetworkWatcherAgentLinux VMAccessForLinux  settings '{"commandToExecute": "echo testing"}'
    EOT
  }
} 

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...