如何获取 ARM 中第一个 VMSS 实例的私有 IP 地址?

How do I get private IP address of first VMSS instance in ARM?

我需要将 VMSS 中任何服务器的 IP 地址添加到 DNS,因此使用以下 ARM 表达式来获取它直到 运行 进入第一个实例不再是 0 的问题(例如删除旧实例或执行自动缩放操作的位置)。我不知道有什么解决方案可以可靠地获取有关 VMSS 内任何实例的实例编号的信息。

我需要此功能的原因是 VMSS 实例托管 FTP 服务,该服务应由内部客户端访问,并且由于 FTP 使用数据的方式,将 VMSS 置于 LB 之外不是一个选项通道端口。

此记录随后作为 ftp

的 A 记录插入 DNS

"instanceNic-0": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/',resourceGroup().name,'/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('namingInfix'),'/virtualMachines/0/networkInterfaces/', variables('nicName'))]",

ARM 当前未跟踪规模集实例(它们是规模集的子实例,整个生命周期由规模集对象管理)。所以你可以使用 REST API 或 CLI/powershell 来获取私有 ip 地址,但私有 ip 目前无法通过 ARM 模板直接访问。

Azure 最近发布了 VMSS with Flexible Orchestration 的预览版,其中规模集使用常规 'standalone' IaaS VM。由于那些被 ARM 完全跟踪,您应该能够使用 ARM 表达式来获取 NIC IP 信息。