我试图在我的 terraform 执行中使用以下内容:
resource "azurerm_virtual_machine_extension" "vmex" {
name = "myVM"
location = "eastus"
resource_group_name = "${azurerm_resource_group.rg.name}"
virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.9"
settings = <<SETTINGS
{
"fileUris": [
"https://example.com/scripts/test.ps1"
],
"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File 'test.ps1'"
}
SETTINGS
}
当它执行时,我得到以下输出:
错误:应用计划时出错:
发生 1 个错误:
azurerm_virtual_machine_extension.vmex:发生 1 个错误:
azurerm_virtual_machine_extension.vmex:长时间运行的操作以状态“失败”终止:代码=“VMExtensionProvisioningError”消息=“VM 在处理扩展“myVM”时报告失败。错误消息:“完成执行命令”。”
Terraform 不会在遇到错误时自动回滚。相反,您的 Terraform 状态文件已使用成功完成的任何资源进行了部分更新。请解决上述错误并再次申请以逐步更改您的基础架构。
当我 RDP 进入 VM 时,我可以看到文件已正确下载到它应该在的位置,但是,似乎commandToExecute
从未执行过。
如果我直接从下载文件夹运行脚本,它会成功完成。
任何人都可以就如何解决这个问题提供任何建议吗?
注意:我尝试了各种尝试引用文件的组合,但它们似乎都有相同的结果。
更新:按照评论中的建议检查日志后,尝试运行此代码段时的错误是:
"message": "处理 - 文件 ''test.ps1'' 失败,因为该文件没有 '.ps1' 扩展名。请指定有效的 Windows PowerShell 脚本文件名,然后重试。"