2017-12-06 20 views
0

copy element 기능을 통해 내 Azure ARM 배포 템플릿에서 "중첩 된 루프"를 만들려고합니다. 동일한 인스턴스를 여러 개 만들 수 있습니다. 리소스 유형 (Microsoft.Web/sites/hostnameBindings 제 경우)Azure ARM 배포 템플릿의 복사 요소 내 요소를 복사하여 여러 인스턴스 작성

특히 내가 여러 애플 리케이션 (하늘빛 애플 리케이션 서비스 웹 사이트)에 여러 호스트 이름을 바인딩하는 중이 야.

이것이 가능합니까? 또는 linked templates 경로로 이동해야합니까?

여기까지 시도했지만 지금까지 제대로 작동하지 않습니다.

parameters.json

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
    "appList": { 
     "value": [ 
     { "appName": "app1", "hostNames": [ "app1.qqq.example.com", "app1.ttt.example.com" ] }, 
     { "appName": "app2", "hostNames": [ "app2.qqq.example.com" , "app2.ttt.example.com" ] }, 
     { "appName": "app3", "hostNames": [ "app3.qqq.example.com", "app3.ttt.example.com" ] }  
     ] 
    }  
    } 
} 

template.json는

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
    "appList": { "type": "array" } 
    }, 
    "resources": [ 
    { 
     "type": "Microsoft.Web/sites/hostnameBindings", 
     "name": "parameters('appList')[copyIndex('webAppCopy')]/parameters('appList')[copyIndex('webAppCopy')].hostNames", 
     "copy": [ 
     { 
      "name": "webAppCopy", 
      "count": "[length(parameters('appList'))]" 
     }   
     ], 
     "apiVersion": "2016-03-01", 
     "location": "[resourceGroup().location]" 
    } 
    ], 
    "outputs": {} 
} 

답변

0

나는 중첩 루프에 대한 직접 지원에 대한 워드 프로세서에서 아무것도 본 적이 없어. 다음과 같이 그러나 당신은 아마 numeric functions으로이 문제를 해결할 수 :

  1. 는 수 - 중 - 애플 리케이션입니다 템플릿 변수를 정의 * 수 - 중 - 주소 당 응용 프로그램. 이 변수를 호출하십시오. bindingCount
  2. bindingCount를 "복사"의 수로 사용하십시오.
  3. 리소스 이름을 구성 할 때 div 및 mod 함수를 사용하여 copyIndex를 가져 와서 "app index"및 "hostname "색인. I 이름을 구성하는 수식에서 수학을 인라인해야한다고 생각합니다.
+0

감사합니다. @ JohnLusk. 앱당 동일한 호스트 이름을 사용했다면이 솔루션을 사용할 수 있습니다 (app1에 3 개의 호스트 이름이 있고 app2에 5 개의 호스트 이름이 있음). 아직도 "일반적인"해결책을 찾고 있습니다. –

+0

"condition"요소에 새로운 (ish) "if"문을 사용할 수 있는지 알아보기 위해 copyIndex가 루프의 반복에서 배포를 시도하지 못하도록하는 것이 좋습니다. 호스트 이름 배열. 잡히지 않는 것은 복잡해질 수 있다는 것입니다. copyIndex가 "조건"에서 지원되는지조차 확신하지 못합니다. –