在Azure资源管理器模板中删除VM是自定义脚本失败

时间:2020-01-16 00:07:09

标签: azure azure-resource-manager azure-marketplace

我正在使用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'))]"
    }

1 个答案:

答案 0 :(得分:1)

根据您的要求,您需要了解模板部署进度的顺序。

创建带有扩展名的VM时。它将首先创建VM,然后在VM中执行VM扩展。因此,无论VM扩展执行失败还是成功。虚拟机已经在运行。而且,恐怕没有自定义扩展失败的功能,模板将删除所有资源本身。据我所知,Azure模板无法删除资源。

因此,我认为一个合适的解决方案是创建一个脚本来检查VM扩展是否成功执行,否则,请使用CLI命令az vm extension delete删除该扩展(假设您使用的是Azure CLI)。然后使用CLI命令az vm extension set重新安装VM扩展。