2016-11-02 2 views
0

Я пытаюсь создать несколько ресурсов на основе нескольких массивов. Один из этих ресурсов - это некоторые учетные записи. У меня есть имена этих учетных записей для хранения в вложенном массиве:Ссылка на объект во вложенном массиве в шаблоне руки

"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.... 

Я думал, что я мог бы перебирать это так:

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

Где я буду иметь некоторые из этих счетов для хранения ресурсов , все с копией, так что имя будет получить взято из 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.

По вопросам, как это: Access/process (nested) objects, arrays or JSON JSON обычно может быть оценен следующим образом. Не влияет ли способ, которым манипулятор влияет на шаблон, от этого?

Когда я пытаюсь использовать эти диски как OS диски для моей виртуальной машины, который также получает петельную создать много виртуальных машин, я не может добавить их как мне требуется доступ к вложенному массиву:

"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 также попытался разбить вложенный массив на многие, но по мере того, как я зацикливаю виртуальную машину, для которой требуются собственные учетные записи, мне все равно нужно увеличивать одно число, что, по-видимому, потребует, чтобы я не смог создать виртуальную машину в цикле.

Я мог бы также разделить ресурс на цикл во вложенный шаблон. Смогу ли я создать много ресурсов «Microsoft.Resources/deployments», которые все указывают на один и тот же внешний шаблон, а затем каждый раз передают в другое число в качестве параметра, чтобы увеличить число таким образом?

Любые идеи? Спасибо за ваше время

+0

шаблоны рук довольно мелкие на части выражений, я думаю, что это не позволит провести такую ​​сложную оценку, tbh – 4c74356b41

ответ

1

Я думаю, что ваш синтаксис массива неправильно, попробуйте это в вашем объявлении переменной:

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

IOW, удалить «uniqueStringArray0» часть вашего заявления, который создает элемент массива, который строка, а не массив, поэтому [0] [0] недействителен, но [1] [0] - нет.

+0

oh да, я создаю еще один элемент в массиве. ти –

Смежные вопросы