2016-01-26 77 views
3

我有一個在單個資源組中提供少量資源的arm模板。其中一些資源隨後發生變化(定價層正在針對不同的資源組進行更改)。Azure - 不允許Arm模板修改現有資源

例如,在我的arm模板中,Sql數據庫最初爲S1性能設置,然後由用戶按比例擴展到S2。然後我編輯我的arm模板以添加存儲帳戶資源。當我爲了增加存儲帳戶我看到我的數據庫被縮小到S1(在我的胳膊模板默認值)發佈至現有的資源組(一個與SQL數據庫擴大到S2)更新的模板。

我的問題是:有沒有辦法阻止arm模板修改現有資源的屬性?

+0

您可以創建一個[資源鎖(https://azure.microsoft.com/en-us/documentation/articles/resource-group-lock-resources/)對這些資源,但這樣會導致整個部署失敗。 – BenV

+0

您可以簡單地部署一個僅包含存儲帳戶的不同模板嗎?或者出於某種原因需要將它們結合起來?如果以增量模式(這是默認模式)進行部署,則不會影響模板中未定義的現有資源。 –

+0

@ bmoore-MSFT我們有很多環境(資源組),我們需要確保添加調配新的資源後(資源列表將繼續增長)和現有的資源保持不變。如果我們爲每個資源添加一個單獨的模板,那麼這可能會使升級過程變得更加複雜。這就是爲什麼我想要在一個模板中包含所有內容 – Milen

回答

3

天青RM模板的性質是一個聲明性結構,它定義一個解決方案應該如何進行部署。如果發現不在模板中的東西,它應該根據其所做的事情將其更改爲與模板匹配。

您可能會更好轉換你的模板PowerShell腳本(或REST API調用)的方式,你可以創建/修改信息之前檢查狀態。

另一種方法是修改這些參數在腳本的模板被調用之前。所以你可以將SQL數據庫調整到S2,如果已經存在的話。

+0

謝謝你的建議,我會仔細研究它。 – Milen

+0

我會去修改腳本中的模板參數,因爲它很容易檢查資源是否存在,並要求其版本和層(例如)作爲我的'Deploy-AzureResourceGroup.ps1'文件的一部分。再次感謝你的幫助 :) – Milen