2017-10-10 60 views
0

在ARM模板部署我需要添加SQL Server上的防火牆例外在同一個模板中定義Azure的應用程序服務的出站IP地址功能的使用:引用()在資源的copy.count(Azure的RM模板)

{ 
    "name": "[concat(variables('sqlServerName'),'/azureFireWallRule',copyIndex())]", 
    "type": "Microsoft.Sql/servers/firewallRules", 
    "apiVersion": "2014-04-01", 
    "properties": { 
    "startIpAddress": "[split(reference(variables('appServiceRef')).possibleOutboundIpAddresses,',')[copyIndex()]]", 
    "endIpAddress": "[split(reference(variables('appServiceRef')).possibleOutboundIpAddresses,',')[copyIndex()]]" 
    }, 
    "copy": { 
    "name": "[concat(variables('sqlServerName'),'azureFireWallRule')]", 
    "count": "[length(split(reference(variables('appServiceRef')).possibleOutboundIpAddresses,','))]" 
    }, 
    "dependsOn": [ 
    "[variables('sqlServerRef')]", 
    "[variables('appServiceRef')]" 
    ] 
} 

但是不允許在copy.count中使用reference()函數。

我試圖解決這個(不是沒有運氣):具有嵌套部署資源通過IP數作爲paramater

  • 使用條件屬性

OFC,問題可能是通過2次連續部署解決。但是有沒有一種方法可以通過單個ARM模板來實現?

+0

如果您[請檢查Azure網絡應用的** possibleOutboundIpAddresses **或** outboundIpAddresses **](http://ruslany.net/2015/06/how-to-find-out-outbound-ip-addresses -used-azure-web-app /),你可以發現它通常包含4個出站IP地址。所以你可以嘗試直接設置「count」爲4。 –

+0

這並非總是如此。我有5-6 possibleOutbounIpAddresses有時 –

回答

0

據我所知,這是不可能的。

原因是在部署發生之前循環展開,因此不允許動態。

0

雖然不是一次部署,但可以在單個模板中完成。由於possibleOutboundIpAddresses是可變的,因此您需要部署Web應用程序,然後啓動嵌套部署並輸出數組。這個嵌套部署可以是一個內聯模板,它不需要是一個單獨的文件,並且由於您只是輸出一個值,所以模板可以非常簡單。 (一個參數一個輸出)。

這有幫助嗎?

+0

我的意圖是在單個部署(和單個ARM模板)方面做。對不起,我不清楚 –

+0

你可以在單個模板和客戶端的單個PUT請求中完成它,我很好奇你對部署數量的限制嗎? –

+0

我最初嘗試過,它不適合我。你有沒有工作的例子? –

相關問題