繁体   English   中英

ARM 模板 - 从 a.network interface id 获取私有地址 ip

[英]ARM Template - Get a private ip address from a network interface id

我有一个由 ARM 模板创建的网络接口:

            "type": "Microsoft.Network/networkInterfaces",
        "apiVersion": "2020-11-01",
        "name": "[parameters('networkInterfaces_test_0_eth0_name')]",
        "location": "westeurope",
        "dependsOn": [
            "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_vpc_name'), 'subnet_signaling_int')]",
            "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroups_sg_int_signal_name'))]"
        ],
        "properties": {
            "ipConfigurations": [
                {
                    "name": "[concat(parameters('networkInterfaces_test_0_eth0_name'), '_static')]",
                    "properties": {
                        "privateIPAddress": "192.168.0.93",
                        "privateIPAllocationMethod": "Static",
                        "subnet": {
                            "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_vpc_name'), 'subnet_signaling_int')]"
                        },
                        "primary": true,
                        "privateIPAddressVersion": "IPv4"
                    }
                },
                {
                    "name": "[concat(parameters('networkInterfaces_test_0_eth0_name'), '_virtual')]",
                    "properties": {
                        "privateIPAddress": "192.168.0.82",
                        "privateIPAllocationMethod": "Static",
                        "subnet": {
                            "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworks_vpc_name'), 'subnet_signaling_int')]"
                        },
                        "primary": false,
                        "privateIPAddressVersion": "IPv4"
                    }
                }
            ],
            "dnsSettings": {
                "dnsServers": []
            },
            "enableAcceleratedNetworking": false,
            "enableIPForwarding": false,
            "networkSecurityGroup": {
                "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroups_sg_int_signal_name'))]"
            }
        }
    },

现在在另一个 arm 模板中,我需要检索地址 192.168.0.82 来设置 VM 标签,我该怎么做?

我用接口 ID 设置了一个变量

   "variables" : {
  "test" : "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaces_oam_0_eth0_name'))]"

这对于 ARM 模板是不可能的,您无法检索现有资源的属性(嗯,在某种意义上您可以使用reference() function但它不适用于标签 - 这适用于有限的用例,在属性中例如资源,而不是变量)。

您可以改为使用 powershell 脚本,该脚本会为您提取此值并将其作为参数放入第二个 ARM 模板中。

或者您可以尝试使用 Bicep - 请参阅Bicep 中的现有资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM