ARM - 获取VMSS的私有IP

时间:2017-03-14 15:41:36

标签: azure azure-resource-manager

我使用ARM模板部署了VMSS。

我想将它的第一个VM的IP地址添加到output

在Azure资源管理器中 - 我将资源视为:

...
        "ipConfigurations": [
          {
            "name": "jm-website-script-4-master-ip",
            "id": "/subscriptions/0a4f2b9c-***-40b17ef8c3ab/resourceGroups/jm-website-script-4/providers/Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic/ipConfigurations/jm-website-script-4-master-ip",
            "etag": "W/\"09be80d2-76f5-49fc-ad47-0ef836a3799a\"",
            "properties": {
              "provisioningState": "Succeeded",
              "privateIPAddress": "10.0.0.5",
...

所以我尝试添加到variables

"masterVM": "[concat('Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic/ipConfigurations/jm-website-script-4-master-ip')]",

然后调用输出:

  "outputs": {
    "MasterFirstIPConfig": {
      "type": "string",
      "value": "[reference(variables('masterVM').properties.privateIPAddress)]"
    }
  }

这给我一个错误:

  

无法评估语言表达式属性“Microsoft.WindowsAzure.ResourceStack.Frontdoor.Expression.Expressions.JTokenExpression”..

我想我的masterVM变量定义在某些方面是完全错误的,但无法得到它。

UPD解决方案

感谢4c74356b41的答案。

解决方案如下:

变量定义:

"masterVM": "Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic"

输出:

  "outputs": {
   "MasterFirstIPConfig": {
     "type": "string",
     "value": "[reference(variables('masterVM'),'2016-09-01').ipConfigurations[0].properties.privateIPAddress]"
   }
 }

1 个答案:

答案 0 :(得分:2)

好吧,你的目标是错误的资源。您应该定位到networkInterface(在这种情况下您不需要连接),您还必须正确引用它:

"masterVM": "Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic]"

像这样引用

"value": "[reference(variables('masterVM'),'2016-09-01').ipConfigurations[0].properties.privateIPAddress]"