2016-11-02 1 views
0

팔 템플릿에 중첩 된 배열 객체를 참조하는. 이러한 리소스 중 하나는 일부 저장소 계정입니다.내가 몇 배열을 기반으로 여러 자원을 만들려고하고

{ 
    "apiVersion": "[variables('storageApiVersion')]", 
    "type": "Microsoft.Storage/storageAccounts", 
    "name": "[variables('storageAccountArray')[0][copyIndex()]]", 
    "location": "[variables('computeLocation')]", 
    "copy": { 
    "name": "storageLoop0", 
    "count": "[variables('saCount0')]" 

나는이 저장소 계정 자원의 몇 가지를해야합니다 여기서 나는과 같이이 반복 할 수있을 것이라고 생각

"storageAccountArray": [ 
    "uniqueStringArray0", 
    [ 
    "[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '0'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '1'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '2'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '3'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '4'))]" 
    ], 
    "uniqueStringArray1", 
    [ 
    "[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '0'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '1'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '2'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '3'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '4'))]" 
    ], 
    "uniqueStringArray2", 
    [ 
    "[toLower(concat(parameters('prefix'), 'vhd2', variables('uniqueSuffixID'), '0'))]", 
    "[toLower(concat(parameters('prefix'), 'vhd2', variables('uniqueSuffixID'), '1'))]", 
    etc.... 

: 나는 중첩 된 배열이 저장 계정의 이름이 모든 사본, 그래서 이름이 0,0 다음 0,1 0,2 등에서 가져온받을 것이며, 다음 자원에 이름입니다 : 그래서

"name": "[variables('storageAccountArray')[1][copyIndex()]]" 

1,0 1,1 1, 2 등

이 같은 질문에 따르면

'The template resource '[variables('storageAccountArray')[0][copyIndex()]]' is not valid: Template language expression property 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Expressions.TemplateFunctionExpression' can't be evaluated.

: I 배포하려고 할 때

는 그러나, 나는이 오류가 Access/process (nested) objects, arrays or JSON JSON 일반적으로이 방법으로 평가 될 수있다. 팔이 템플릿을 평가하는 방식으로이 작업을 수행 할 수 없습니까?

"osDisk": { 
      "vhdContainers": [ 
      "[concat('https://', variables('storageAccountArray')[copyIndex()][0], '.blob.core.windows.net/', parameters('vmStorageAccountContainerNameType0'))]", 
      "[concat('https://', variables('storageAccountArray')[copyIndex()][1], '.blob.core.windows.net/', parameters('vmStorageAccountContainerNameType0'))]", 
      "[concat('https://', variables('storageAccountArray')[copyIndex()][2], '.blob.core.windows.net/', parameters('vmStorageAccountContainerNameType0'))]", 
etc... 

I : 나는 또한 많은 VM을 생성하는 루프지고 내 VM을위한 OS 디스크 등이 디스크를 사용하려고하면

, 나는 액세스하는 중첩 된 배열을 필요로를 추가 할 수 없습니다입니다 또한 많은으로 중첩 된 배열을 분할 시도하지만 자신의 스토리지 계정을 필요로하는 VM을 반복하고, 나는 아직도 내가 루프에서 VM을 생성 할 수 없습니다 요구할 것으로 보인다 하나 개의 숫자를 증가해야합니다.

은 또한 중첩 템플릿에 루프 자원을 분할 할 수있다. 저도 같은 외부 템플릿에 대한 모든 포인트는 다음 번호를 그런 식으로 증가하는 매개 변수로 다른 수의 각각의 시간을 통과 자원을 많은 "Microsoft.Resources/배포"를 만들 수 있을까?

아이디어가 있으십니까?

는 는 는

IOW, 당신의 선언 귀하의 "uniqueStringArray0"부분을 제거, 즉 배열 요소를 만드는 것 어떤이다

"m": [ 
    [ "a", "b", "c" ], 
    [ "1", "2", "3" ] 
] 
:

+0

팔 템플릿은 내가 그것을 TBH – 4c74356b41

답변

1

내가 배열 구문, 당신의 변수 선언이 시도 잘못 생각하는 시간을 내 주셔서 감사합니다 문자열이 아닌 배열 때문에 [0] [0]이지만 잘못 [1] [0]이 아니다.

+0

아 예, 배열의 다른 항목을 만드는거야, 그런 복잡한 평가를 허용하지 않을 생각, 표현 부분에 아주 얕은입니다. 타이 –