使用 ARM 模板输出虚拟机的 IP 地址

使用 ARM 模板输出虚拟机的 IP 地址

拥有 ARM 模板(https://github.com/jmspring/arm-template-neo4j-docker/blob/master/azuredeploy.json) 将启动一个实例并分配一个公共 IP。

这里我需要将 IP 地址打印为输出。我尝试将以下内容添加到模板中。但它仍然没有打印该值。

"outputs": {
"ipaddress": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName')),providers('Microsoft.Network', 'publicIPAddresses').apiVersions[0]).ipAddress]"
  },

"VM IP address": {
  "type": "string",
   "value": "[reference(variables('publicIPAddressName')).ipAddress]"
 }
}
}

任何帮助都会有帮助。

答案1

我以前见过几次这种情况。如果你想立即获取 IP 地址,那么你需要使用静止的对于“publicIPAllocationMethod”属性。

如果您不想使用静态(保留 IP),那么您需要在连接到公共 IP 的虚拟机上建立依赖关系(然后将分配地址)。

仅供参考,对于私有 IP 地址,如果也需要,您可以使用以下命令返回私有 IP 地址:

reference('nic-name').ipConfigurations[0].properties.privateIPAddress

答案2

答案确实来自Azure 文档

"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))).IpAddress]",

发挥想象力并使用用户名构建 SSH 登录字符串:

     "Public IP SSH": {
    "value": "[concat(
        reference(resourceId('Microsoft.Compute/virtualMachines',variables('vmName'))).osProfile.adminUsername,
        '@',
        reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))).IpAddress]",
    "type": "string"
 },

答案3

我使用它来检索公共 IP:“[reference(concat('Microsoft.Network/publicIPAddresses/', variable('masterPublicIPAddressName'))).ipAddress]”。我使用“publicIPAllocationMethod”作为“static”

相关内容