0

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

1 回答 1

1

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

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

所以我认为一个合适的解决方案是创建一个脚本来检查 VM 扩展是否成功执行,如果没有,然后使用 CLI 命令删除扩展az vm extension delete(我假设您使用 Azure CLI)。然后使用 CLI 命令再次安装 VM 扩展az vm extension set

于 2020-01-21T07:17:52.100 回答