使用 azurerm_virtual_machine_extension 时,PowerShell 脚本不执行

Gar*_*ark 5 azure terraform terraform-provider-azure

我正在尝试在我的 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
}
Run Code Online (Sandbox Code Playgroud)

当执行时,我得到以下输出:

错误:应用计划时出错:

发生 1 个错误:

  • azurerm_virtual_machine_extension.vmex:发生 1 个错误:

  • azurerm_virtual_machine_extension.vmex:长时间运行的操作终止,状态为“失败”:代码 =“VMExtensionProvisioningError”消息 =“VM 在处理扩展“myVM”时报告失败。错误消息:\“已完成执行命令\”。”

Terraform 不会在出现错误时自动回滚。相反,您的 Terraform 状态文件已使用成功完成的所有资源进行了部分更新。请解决上述错误并再次应用以逐步更改您的基础架构。

当我通过 RDP 进入虚拟机时,我可以看到该文件已正确下载到预期的位置,但是,该文件似乎commandToExecute从未执行过。

如果我直接从下载文件夹运行脚本,它就会成功完成。

任何人都可以提供有关如何解决此问题的任何建议吗?

注意:我尝试了尝试引用该文件的各种组合,但所有这些组合似乎都有相同的结果。

更新:按照评论中的建议检查日志后,尝试运行此代码片段时出现的错误是:

"message": "处理 -File ''test.ps1'' 失败,因为该文件没有 '.ps1' 扩展名。请指定有效的 Windows PowerShell 脚本文件名,然后重试。"

Rau*_*ega 5

我遇到了这类问题,就我而言,这与脚本和参数的内容有关。但因为它可能是许多其他的东西,所以您需要检索一些额外的数据。

尝试查明扩展本身是否有更多信息。转到您的 Azure 帐户并按照以下路径操作:主页 > 虚拟机 > [your_virtual_machine]。在包含所有选项的边栏选项卡中,选择“扩展”以查看您的扩展及其状态(应该是“配置失败”。单击该扩展。您将看到有关它的一些信息。检查状态和详细状态。

详细状态是一个链接,它将向您显示一个 JSON,其中可以包含有关正在发生的情况的重要信息。可能它会包含 PS1 脚本的错误输出。

让我知道这是否有帮助,如果该信息还不够,请将其发布在这里,以便我可以获得更多信息,以便我能够检查并尝试提供帮助。

问候,劳尔。

编辑:因此,在检查了我们的代码示例之间的差异之后,最后单引号导致了您的问题。很高兴您发现了问题。