#azure #arm-template #azure-vm-scale-set #azure-marketplace
#azure #arm-template #azure-vm-scale-set #azure-торговая площадка
Вопрос:
Я создал шаблон ARM с набором масштабов виртуальной машины, теперь я застрял в разработке шаблона ARM, потому что не смог получить частные IP-адреса виртуальной машины, созданной внутри набора масштабов. Частные IP-адреса требуются для обновления исходных данных Cassandra с помощью сценариев расширения.
{
"type": "Microsoft.Compute/virtualMachineScaleSets",
"apiVersion": "2020-06-01",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]",
"Microsoft.Compute/images/myCustomImage"
],
"identity": {
"type": "SystemAssigned"
},
"sku": {
"name": "[parameters('vmSku')]",
"tier": "Standard",
"capacity": "[parameters('instanceCount')]"
},
"properties": {
"overprovision": "false",
"upgradePolicy": {
"mode": "Manual"
},
"virtualMachineProfile": {
"storageProfile": {
"imageReference": {
"id": "[resourceId('Microsoft.Compute/images', 'myCustomImage')]"
}
},
"osProfile": {
"computerNamePrefix": "[parameters('vmName')]",
"customdata": "1",
"adminUsername": "centos",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "/home/centos/.ssh/authorized_keys",
"keyData": "xxxx"
}
]
}
}
},
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "[parameters('nicName')]",
"properties": {
"primary": true,
"ipConfigurations": [
{
"name": "[variables('ipConfigName')]",
"properties": {
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), 'cassandra')]"
}
}
}
]
}
}
]
}
}
}
}
Как получить частные IP-адреса виртуальных машин, созданных в наборе масштабов?
Комментарии:
1. Есть еще какие-нибудь обновления по этому вопросу? Решает ли это вашу проблему? Почему бы не дать какой-либо ответ, а также не принять его?
Ответ №1:
Вы можете использовать функцию reference
для получения сетевого ресурса экземпляров VMSS. И идентификатор ресурса сетевых адаптеров экземпляра, выглядят следующим образом:
/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmssName}/virtualMachines/{instanceId}/networkInterfaces/{nicName}
Таким образом, вы можете установить переменные для каждого идентификатора экземпляра, а затем получить частные IP-адреса, часть шаблона выглядит следующим образом:
"variables": {
"instanceNic-0": "[concat('/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmssName}/virtualMachines/0/networkInterfaces/', parameters('nicName'))]"
},
"outputs": {
"instanceNic-0-IP": {
"type": "string",
"value": "[reference(variables('instanceNic-0'), '2016-09-01').ipConfigurations[0].properties.privateIPAddress]"
}
}