CustomScript 扩展在 Azure Linux 中重新运行命令

本文针对 Azure Linux CustomScript 扩展中的最后一个命令重新运行上一个命令的问题提供了解决方法。

原始产品版本:   运行 Linux 的虚拟机
原始 KB 编号:   4054277

症状

更新 2.0.5 作为自动更新应用到 Linux Microsoft.Azure.Extensions.CustomScript 2.0.x 后,扩展运行之前的命令将重新运行。

安装了 Microsoft.Azure.Extensions.CustomScript 2.0.x 的虚拟机很容易收到 2.0.5 更新。 但是,由于虚拟机不会立即接收次要更新,因此此更新需要更改虚拟机模型。

若要确定脚本版本,请打开 Azure 门户,选择虚拟机,选择扩展 > 自定义脚本扩展,然后选择扩展以查看其版本属性。 您还可以在命令提示符下运行以下命令来查询完整版本信息:

az vm get-instance-view -g resourceGroupName -n vmName --query "instanceView.extensions[?type == 'Microsoft.Azure.Extensions.CustomScript']"
[
  {
    "name": "CustomScript",
    "statuses": [
      {
        "code": "ProvisioningState/succeeded",
        "displayStatus": "Provisioning succeeded",
        "level": "Info",
        "message": "Enable succeeded: \n[stdout]\nFri Nov 10 23:41:04 UTC 2017\n\n[stderr]\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.CustomScript",
    "typeHandlerVersion": "2.0.5"
  }
]

原因

出现此问题的原因是 Microsoft.Azure.Extensions.CustomScript 2.0.5 扩展中存在问题。 这不是升级的预期行为。

解决方法

如果使用早于 2.0.5 的 CustomScript 版本,则可以通过卸载 Linux Microsoft.Azure.Extensions.CustomScript 来避免此意外行为。

状态

已作为扩展自动更新在 CustomScript 2.0.6 中解决了解决 CSE 问题的解决方法。