在azure ARM中输出VM的私有ip

时间:2016-09-19 19:26:06

标签: azure automation cloud azure-resource-manager

我在ARM模板中使用copyindex()来启动多个Azure VM。这是我正在使用的资源:

{
  "apiVersion": "[variables('apiVersion')]",
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[concat(parameters('vmDnsPrefixClientNode'),copyIndex(1))]",
  "location": "[resourceGroup().location]",
  "copy": {
        "name": "virtualMachineLoop",
        "count": "[parameters('vmInstancesClientNode')]"
    },
  "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'),copyindex(1))]",
        "[concat('Microsoft.Network/networkInterfaces/', parameters('vmDnsPrefixClientNode'),copyindex(1),'-nic')]"
  ],
  "properties": {
    "hardwareProfile": {
      "vmSize": "[parameters('vmSizeClientNode')]"
    },
    "osProfile": {
      "computername": "[concat(parameters('vmDnsPrefixClientNode'), copyIndex(1))]",
      "adminUsername": "[parameters('username')]",
      "adminPassword": "[parameters('password')]"
    },
    "storageProfile": {
      "imageReference": {
        "publisher": "[variables('imagePublisher')]",
        "offer": "[variables('imageOffer')]",
        "sku": "[variables('ubuntuOSVersion')]",
        "version": "latest"
      },
      "osDisk": {
        "name": "osdisk1",
        "vhd": {
          "uri": "[concat('http://',variables('storageAccountName'),copyindex(1),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',parameters('vmDnsPrefixClientNode'),copyIndex(1),'-osdisk1.vhd')]"
        },
        "caching": "ReadWrite",
        "createOption": "FromImage"
      },
      "dataDisks": [
        {
          "name": "datadisk1",
          "diskSizeGB": "10",
          "lun": 0,
          "vhd": {
            "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'),copyindex(1)), variables('apiVersion')).primaryEndpoints.blob, variables('vmDataContainerName'),'/',parameters('vmDnsPrefixClientNode'),copyIndex(1),'-',variables('dataDisk1VhdName'),'.vhd')]"
          },
          "createOption": "Empty"
        }
      ]
    },
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmDnsPrefixClientNode'),copyindex(1),'-nic'))]"
        }
      ]
    }
  }
},

我尝试过这样的事情,但是没有工作

"outputs": {
  "privateIP": {
    "value": "[reference(concat(parameters('vmDnsPrefixClientNode'),copyindex(1),'-nic'),providers('Microsoft.Network', 'privateIPAddresses').apiVersions[0]).dnsSettings.fqdn]",
    "type": "string",
    "copy": {
        "name": "vmNic",
        "count": "[parameters('vmInstancesClientNode')]"
    }
  }
}

任何人都知道如何在输出中获取私有IP或内部FQDN?

1 个答案:

答案 0 :(得分:2)

我在模板中使用了以下代码从网络接口获取私有IP地址。

"outputs":{
    "networkInterface":{
        "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName')),'2016-09-01')]",
        "type": "object"
    }
}

获得输出后,您可以在

找到IP地址
  

outputs.networkInterface.value.ipConfigurations [0] .properties.privateIPAddress

后面的dns后缀
  

outputs.networkInterface.value.dnsSettings.internalDomainNameSuffix