的CI/CD過程:如何強制使用ARM模板+ CustomScriptExtension創建的VM重新下載腳本並運行它?
- 編譯的可執行文件,並上傳它Azure存儲。
- 將「自定義腳本」(即下載可執行文件並將其運行)上載到Azure存儲。
- 部署具有CustomScriptExtension下載並運行自定義腳本的VM的ARM模板。
後續的構建更新腳本和可執行文件,但虛擬機不下拉更新的腳本。如何使它重新下載並運行將運行更新的可執行文件的腳本?
的CI/CD過程:如何強制使用ARM模板+ CustomScriptExtension創建的VM重新下載腳本並運行它?
後續的構建更新腳本和可執行文件,但虛擬機不下拉更新的腳本。如何使它重新下載並運行將運行更新的可執行文件的腳本?
爲了在現有VM上執行CustomScriptExtension,該擴展的配置必須與上次部署時不同 - 如果它看起來相同,即json資源中的每個屬性值都是與上次相同,擴展名不會重新應用。
有兩種簡單的方法可以使配置「不同」。
1)正在更改資源中的任何屬性值,但這可能並不總是實用的(在某些情況下與您真正想做的事情相反),因此要更改的最合理的屬性是fileUris屬性。通常這個屬性包含一個爲特定部署生成的sasToken。由於每當屬性值改變並且擴展被重新應用時,sasToken是不同的。你可以看到這個在這裏一個示例:
https://github.com/bmoore-msft/AzureRM-Samples/tree/master/VMCSEInstallFilePS
看看根腳本,即部署的模板。
2)如果#1不適合工作流程,可以通過在資源上使用forceUpdateTag屬性來控制這一點。您在第一次部署時使用任何字符串「種下」此值,然後更改後續部署中的值以重新應用擴展。因此,例如,您可以使用參數並在您想強制更改時增加該值。
HTH
感謝,看起來它確實與普通的虛擬機(這回答了這個問題)的作品。我也嘗試過使用虛擬機規模集,但在這種情況下無法實現。 – alvarez
你可以發佈你試過的整個虛擬機資源嗎? –
這是整個模板:http://pastebin.com/hD7arcyW – alvarez