0

這裏的外面是什麼,我有在Azure上:ARM模板 - 根據資源從資源組

Resource group: 'microservice-1' 
App Service: 'app-service-1' 
Database: 'database-1' 

Resource group: 'microservice-2' 
App Service: 'app-service-2' 
Database: 'database-2' 

Resource group: 'shared-infrastructure' 
Database: 'shared-database-1' 

兩個微服務使用shared-database-1。每個微服務都包含ARM模板腳本,用於創建/更新部署微服務時使用的資源組。在ARM腳本中,我們可以定義依賴關係(dependsOn),以便按照正確的順序更新資源,但只能在資源組內工作。

下面是我想要運行的場景:
Azure中沒有任何內容,我想發佈microservice-1。我可以使用Azure/ARM中是否存在 機制,以便在microservice-1之前運行shared-infrastructure 版本(ARM模板)?

回答

1

不,除非您在ARM模板中明確包含該內容。 DependOn只是檢查資源是否存在,它不會爲你創建它。

但是,您可以將它包含在您的模板中,如果存在,它將不會執行任何操作,除非您指定deploymentmode = complete。

因此,您可以創建3個模板:microservice-1,microservice-2和shared-infrastructure。在你的模板,微服務,您可以包括部署創建共享基礎架構,如果它不會做它已經到位

編輯基於評論:

您可以在同一訂閱後鏈路資源部署。使用ARM無法做到這一點,但PowerShell + ARM可以做到這一點,您可以搜索共享資源的現有實例,如果它不存在 - 使用ARM模板創建它,然後調用另一個ARM模板來部署實際服務。

+0

問題是「如何包含它」。我知道鏈接的模板,但只能在相同的資源組中使用。 – frizik

+1

您可以在部署後鏈接相同訂閱中的資源https://azure.microsoft.com/zh-cn/documentation/articles/resource-group-link-resources/。但這並不能幫助你解決問題,但是你沒有辦法做你正在做的事情。 – 4c74356b41

+0

確保這一點的方法是每次運行多個部署 - 如前所述,只是「使其成爲可能」,所以如果存在,它是無操作的,如果它不會創建它的話。在這種情況下,部署模式無關緊要,除非您的組中有不在模板中的額外資源 - 如果您選擇「完成」模式將刪除它們,但對於現有資源的行爲將與增量相同。 –