如何在输出中使用 ARM 模板在部署后列出 Azure VM 或 HDI 集群的 IP

How to list IP of Azure VM or HDI cluster after deployment using ARM template in the output

我已经创建了 ARM 模板来部署 Azure VM 和 HDI 集群。我想在部署完成后获取并列出 Azure VM 的 Public IP 和 HDI 集群头节点的专用 IP。

有没有办法使用 ARM 模板获取它?

Is there a way to get it using ARM template?

据我所知,您无法使用 template.You 获取 VM IP,可以使用 azure cli 获取您的 VM IP 而不是模板。如果您的客户端 Linux,您可以在创建 VM 后使用以下命令。

azure vm show -g shui123 -n shui|grep "Public IP address"| awk -F: '{print }'

I want to get and list the Public IP of Azure VM and Private IP of HDI cluster headnode after deployment is finished.

Public Azure VM 的 IP 是什么意思?只是 VM 还是 HDI 集群中的 VM?

如果只是一个虚拟机,可以使用上面的命令,如果是HDI集群中的虚拟机,Azure HDInsight集群将不允许分配任何public IP给它。如果需要将 IP 分配给 HDInsight 群集,则必须在 VNET 中创建 HDInsight。下面的文章确实谈到了 this.

您可以通过 Ambari RE ST AP I 获取 HDI 集群 IP。

for HOSTNAME in $(curl -u admin:$PASSWORD -sS -G "https://shuitest.azurehdinsight.net/api/v1/clusters/shuitest/hosts" | jq -r '.items[].Hosts.host_name')
do
    IP=$(curl -u admin:$PASSWORD -sS -G "https://$CLUSTERNAME.azurehdinsight.net/api/v1/clusters/$CLUSTERNAME/hosts/$HOSTNAME" | jq -r '.Hosts.ip')
  echo "$HOSTNAME <--> $IP"
done

更多关于Ambari RE ST AP 的信息请参考这个link

更新:

如果只想列出活动节点IP,可以使用以下命令。

PASSWORD=
CLUSTERNAME=

curl -u admin:$PASSWORD -sS -G "https://$CLUSTERNAME.azurehdinsight.net/api/v1/clusters/$CLUSTERNAME/services/HDFS/components/NAMENODE" |grep LiveNode>test.txt

cat test.txt |awk -F'\' '{print }'|sed 's/\"//g'|tail -1|awk -F: '{print }'

对于所提问题,上述解决方案很好。但是,理想情况下,您不应使用 HDI 集群头节点的专用 IP。这是因为如果头节点(运行 所在的虚拟机)出现故障,私有 IP 会发生变化。头节点有一个 FQDN(完全限定域名)的概念,类似于:hn0-van.0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.nethn1-van.0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net。在任何地方都使用这些 FQDN 代替 IP 地址。它们的 DNS 解析由 Azure vnet 默认 DNS 解析器自动处理。所以不用担心。

获取 FQDN: az network nic list --resource-group <RESOURCEGROUP>

将 替换为您的资源组名称。检查头节点的 FQDN 设置。

一旦有时间,我将post PowerShell 脚本直接为头节点获取准确的 FQDN。

参考:https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-plan-virtual-network-deployment#multinet