我正在使用Azure资源管理器模板在Azure中部署VM。我有一个自定义脚本,可以在VM启动后运行。即使脚本失败,脚本也会运行,VM仍会启动。如果自定义脚本失败,是否有办法拆除VM?
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"[uri(parameters('_artifactsLocation'), concat('scripts/copyfilefromazure.sh', parameters('_artifactsLocationSasToken')))]"
]
},
"protectedSettings": {
"commandToExecute": "[concat('bash ', variables('scriptFileName'), ' ', variables('scriptArgs'))]"
}
根据您的要求,您需要了解模板部署进度的顺序。
创建扩展名为VM的虚拟机。它将首先创建VM,然后在VM中执行VM扩展。因此,无论VM扩展执行失败还是成功。虚拟机已经在运行。而且,恐怕没有自定义扩展名失败的功能,模板会删除所有资源本身。据我所知,Azure模板无法删除资源。
因此,我认为合适的解决方案是创建一个脚本来检查VM扩展是否成功执行,否则,请使用CLI命令az vm extension delete
删除该扩展(假设您使用的是Azure CLI)。然后使用CLI命令az vm extension delete
再次安装VM扩展。