【问题标题】:Do custom script extensions specified in ARM templates run each time the VM is restarted?每次重新启动 VM 时,ARM 模板中指定的自定义脚本扩展是否都会运行?
【发布时间】:2017-01-09 03:40:51
【问题描述】:

我使用以下链接中的示例模板创建了一个带有自定义脚本扩展的 VM:

https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-custom-script-windows

如果我从 Azure 门户停止并启动 VM,则自定义脚本扩展会在启动时运行。但是,如果我从 VM 中重新启动 VM(通过从“开始”菜单中选择“重新启动”),则自定义脚本扩展不会运行。为什么从 VM 内重新启动 VM 时自定义脚本扩展不运行?自定义脚本扩展是否仅在 VM 从解除分配状态启动时执行?

使用 VM 规模集时,如果我从 Azure 门户解除分配然后启动规模集中的单个 VM,则该 VM 的自定义脚本扩展不会执行。但是,如果我解除分配然后从 Azure 门户启动整个规模集,则自定义脚本扩展会为每个 VM 执行。

【问题讨论】:

    标签: azure azure-virtual-machine azure-resource-manager arm-template


    【解决方案1】:

    Azure 自定义脚本扩展允许 Azure VM 的所有者运行存储在 Azure 存储 during or after VM provisioning 中的脚本。脚本扩展仅在每个 VM 上执行一次,而不是每次机器启动时执行 - 但如果您通过 Azure 门户停止 VM,然后再次启动 VM,则将重新配置 VM,因此脚本将再次运行。 Azure虚拟机stopped和stopped(deallocated)状态的区别,参考link
    如果需要重复运行脚本,可以在自定义脚本扩展中添加时间戳参数,更多信息参考link

    【讨论】:

    • 谢谢杰森!这是有道理的。我确实发现 VM 规模集的行为很奇怪。如果我解除分配然后从门户启动规模集中的单个 VM,则自定义脚本扩展不会运行。但是,如果我解除分配然后启动整个规模集,那么自定义脚本扩展就会运行。我认为自定义脚本扩展应该在我解除分配并启动规模集中的单个 VM 时运行。
    • 根据提供的链接,似乎时间戳参数仅在 Azure Linux 扩展中可用。 Windows 虚拟机呢?
    【解决方案2】:

    没有。一旦 VM 停止(解除分配或重新启动)然后启动 VM,自定义脚本不会每次都运行。

    自定义脚本将仅在运行中执行 - 仅在 VM 配置期间首次运行。

    虚拟机的解除分配和虚拟机的启动只与公共 IP 地址的变化有关。但是,dns 命名将保持不变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      相关资源
      最近更新 更多