如何强制使用ARM模板+ CustomScriptExtension创建的VM重新下载脚本并运行它?

时间:2016-06-09 10:36:40

标签: azure azure-virtual-machine

CI / CD流程:

  1. 编译可执行文件并将其上载到Azure存储。
  2. 将“自定义脚本”(下载可执行文件并将其运行)上载到Azure存储。
  3. 部署具有CustomScriptExtension的VM的ARM模板,该模板可下载并运行自定义脚本。
  4. 后续版本会更新脚本和可执行文件,但VM不会下载更新的脚本。如何重新下载并运行将运行更新的可执行文件的脚本?

1 个答案:

答案 0 :(得分:4)

为了在现有VM上执行CustomScriptExtension,该扩展的配置必须是"不同的"比它最后一次部署 - 如果它看起来相同,即json资源中的每个属性值与上次相同,则不重新应用扩展。

有两种简单的方法可以进行配置"不同的"。

1)更改资源中的任何属性值,这可能并不总是实用的(在某些情况下与您真正想要做的相反),因此要更改的最合理的属性是fileUris属性。通常,此属性包含为该特定部署生成的sasToken。由于每次属性值更改并重新应用扩展时sasToken都不同。您可以在此处查看此示例:

https://github.com/bmoore-msft/AzureRM-Samples/tree/master/VMCSEInstallFilePS

查看根目录中部署模板的脚本。

2)如果#1不适合工作流程,则可以使用资源上的forceUpdateTag属性对此进行更多控制。你"种子"此值包含您在第一次部署时所需的任何字符串,然后更改后续部署中的值以重新应用该扩展。因此,例如,您可以使用参数并在需要强制更改时增加该值。

enter image description here

HTH