Что-то вроде следующего было бы моим подходом. Передайте параметр MetaPortNameArray
в виде массива имен виртуальных машин. Я сделал предположения о параметрах кода токена, например о том, что код токена одинаков для каждой виртуальной машины. Если они должны быть уникальными для каждой виртуальной машины, они должны быть частью массива, например массива объектов, а не строк, представляющих имена виртуальных машин.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"MetaPortNameArray": {
"type": "array"
},
"location": {
"type": "string"
},
"MP1TokenCode": {
"type": "securestring"
},
"MP2TokenCode": {
"type": "securestring"
}
},
"variables": {
},
"resources": [
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('MetaPortNameArray')[copyIndex()],'/newuserscript')]",
"apiVersion": "2020-06-01",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines/', parameters('MetaPortNameArray')[copyIndex()])]"
],
"copy": {
"name": "vmExtCopy",
"count": "[length(parameters('MetaPortNameArray'))]"
},
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [ "https://raw.githubusercontent.com/willguibr/azure/main/MetaPort-Standalone-NATGW-v1.0/install_metaport.sh" ]
},
"protectedSettings": {
"commandToExecute": "[concat('sh install_metaport.sh ', parameters('MP1TokenCode'), parameters('MP2TokenCode'))]"
}
}
}
],
"outputs": {}
}
Обновление 1
Основываясь на почти повторяющемся заданном вопросе, я вижу, что вы ищете уникальные токены для каждой виртуальной машины. Ниже приведен подход, который следует использовать с использованием массива объектов.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"MetaPortNameArray": {
"type": "array"
},
"location": {
"type": "string"
}
},
"variables": {
},
"resources": [
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('MetaPortNameArray')[copyIndex()].VmName,'/newuserscript')]",
"apiVersion": "2020-06-01",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines/', parameters('MetaPortNameArray')[copyIndex()].VmName)]"
],
"copy": {
"name": "vmExtCopy",
"count": "[length(parameters('MetaPortNameArray'))]"
},
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [ "https://raw.githubusercontent.com/willguibr/azure/main/MetaPort-Standalone-NATGW-v1.0/install_metaport.sh" ]
},
"protectedSettings": {
"commandToExecute": "[concat('sh install_metaport.sh ', parameters('MetaPortNameArray')[copyIndex()].MPTokenCode)]"
}
}
}
],
"outputs": {}
}
Представление PowerShell переданного массива объектов будет выглядеть так.
$MetaPortNameArray = @(
@{
'VmName' = 'OneMachine'
'MPTokenCode' = 'SomeTokenCodeOne'
},
@{
'VmName' = 'TwoMachine'
'MPTokenCode' = 'AnotherTokenCodeTwo'
}
)
person
Stringfellow
schedule
23.10.2020