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

时间:2017-04-04 13:59:11

标签: azure virtual-machine hdinsight arm-template

我创建了ARM模板来部署Azure VM和HDI集群。我希望在部署完成后获取并列出Azure VM的公共IP和HDI集群头节点的私有IP。

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

2 个答案:

答案 0 :(得分:2)

  

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

根据我的知识,您无法使用模板获取VM IP。您可以使用azure cli来获取VM IP而不是模板。如果您在Linux上使用cli,则可以在创建VM后使用以下命令。

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

我想获取并列出Azure VM的公共IP和HDI的私有IP   部署完成后的集群头节点。

Azure VM的公共IP是什么意思?只是HDI集群中的VM或VM?

如果它只是一个虚拟机,您可以使用上面的命令,如果它是HDI集群中的虚拟机,则Azure HDInsight集群将不允许为其分配任何公共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 $2}'|sed 's/\"//g'|tail -1|awk -F: '{print $1}'

答案 1 :(得分:0)

上述解决方案对于提出的问题很好。但是,理想情况下,您不应使用 HDI 集群头节点的私有 IP。这是因为如果头节点(运行它的虚拟机)出现故障,私有 IP 会发生变化。头节点有一个FQDN(Fully Qualified Domain Name)的概念,比如: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 设置。

一旦我有时间,我也会发布 PowerShell 脚本以直接获取头节点的确切 FQDN。

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