我正在使用terraform为Windows启动一些Azure Scale集。我已经编写了以下代码,用于更新由terraform创建的VM的动态IP。
publisher = "Microsoft.Compute"
settings = jsonencode({
commandToExecute = "powershell.exe (((Get-Content -path C:\\Nomad\\agent\\agent.hcl -Raw) -replace '108.98.16.4','${data.azurerm_network_interface.main.private_ip_address}'| Set-Content -Path C:\\Nomad\\agent\\agent.hcl) | sc.exe start Nomad"
})
但是它抛出以下错误:
错误:Code =“ VMExtensionProvisioningError”消息=“ VM报告了 处理扩展“ joinNomadNodes”时失败。错误信息: \“命令执行完成,但失败,因为它返回了一个 非零退出代码:“ 255”。该命令的错误输出为: “设置内容”无法识别为内部或外部 命令,\ r \ n可操作的程序或批处理文件。\ r \ n'\“ \ r \ n \ r \ n更多 有关故障排除的信息,请访问: https://aka.ms/VMExtensionCSEWindowsTroubleshoot“
现在,如果我正在手动运行命令,则其运行不会出现任何错误:
powershell.exe (((Get-Content -path C:\\Nomad\\agent\\agent.hcl -Raw) -replace '108.98.16.4','178.98.16.5'| Set-Content -Path C:\\Nomad\\agent\\agent.hcl) | sc.exe start Nomad"
答案 0 :(得分:0)
我在“ |”之前添加了转义字符“ ^” ..现在运行正常。
publisher =“ Microsoft.Compute” 设置= jsonencode({ commandToExecute =“ powershell.exe((((Get-Content -path C:\ Nomad \ agent \ agent.hcl -Raw)-replace'108.98.16.4','$ {data.azurerm_network_interface.main.private_ip_address}'^ |设置-Content -Path C:\ Nomad \ agent \ agent.hcl)^ | sc.exe启动Nomad)“ })