Terraform AZ CLI 本地执行命令限制

Posted

技术标签:

【中文标题】Terraform AZ CLI 本地执行命令限制【英文标题】:Terraform AZ CLI local exec command limitation 【发布时间】:2020-12-01 18:24:18 【问题描述】:

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

我想利用的命令部分和 Terraform 不喜欢的是带有 curl 的 '"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 配置程序运行更复杂的命令?

地形版本:0.13

【问题讨论】:

尝试使用 EOT-EOT 包括您的 cmets。看看terraform.io/docs/configuration/… 【参考方案1】:

对于遇到此问题的其他人,感谢@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
  
 

【讨论】:

以上是关于Terraform AZ CLI 本地执行命令限制的主要内容,如果未能解决你的问题,请参考以下文章

Terraform - 无法在本地 exec 中运行多个命令

用于配置 Azure Function App TLS/SSL“仅 HTTPS”设置的 Az CLI

使 terraform 仅使用本地插件的规范方法

Vue-cli3执行serve和build命令时nodejs 内存溢出问题

Terraform 学习总结——Terraform 命令详解

什么是AZ CLI等效的Get-AzSqlServerThreatDetectionPolicy?