使用Terraform在Azure VM运行Ansible配置脚本时遇VMExtension报错
解决Azure Windows VM自定义脚本扩展执行Ansible配置脚本失败的问题
你遇到的VMExtensionProvisioningError错误,根源在于CustomScriptExtension的配置存在几个关键问题,导致脚本未正确执行:
错误的脚本URL:你使用的GitHub链接是网页展示地址(blob页面),而非脚本的原始下载地址。CustomScriptExtension会下载这个网页而非实际的PowerShell脚本,自然无法正常执行。
替换为GitHub原始文件URL:https://raw.githubusercontent.com/ansible/ansible-documentation/devel/examples/scripts/ConfigureRemotingForAnsible.ps1过时的扩展版本:
type_handler_version = "1.9"版本较旧,存在兼容性风险,建议更新到最新稳定版本(如1.10)。脚本路径引用问题:CustomScriptExtension下载的文件会存放在默认工作目录,直接使用
./可能导致路径识别异常,简化命令直接引用文件名即可。
修正后的Terraform配置代码
resource "azurerm_virtual_machine_extension" "configansible" { name = "configansible" virtual_machine_id = azurerm_windows_virtual_machine.onboarding.id publisher = "Microsoft.Compute" type = "CustomScriptExtension" type_handler_version = "1.10" settings = <<SETTINGS { "fileUris": [ "https://raw.githubusercontent.com/ansible/ansible-documentation/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" ], "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1" } SETTINGS }
额外排查建议
如果修正后仍报错,可通过以下方式定位问题:
- 登录目标VM,查看扩展日志文件:
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension - 手动在VM上执行脚本,确认脚本本身是否存在依赖缺失或权限问题
内容的提问来源于stack exchange,提问作者Norbert
相关产品推荐
相关产品推荐

