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

如何在输出中使用ARM模板列出部署后Azure VM或HDI群集的IP,azure,virtual-machine,azure-hdinsight,arm-template,Azure,Virtual Machine,Azure Hdinsight,Arm Template,我已经创建了ARM模板来部署Azure VM和HDI集群。我想在部署完成后获取并列出Azure VM的公共IP和HDI cluster headnode的私有IP 有没有一种方法可以使用ARM模板获得它 有没有一种方法可以使用ARM模板获得它 据我所知,您无法使用模板获取VM IP。您可以使用azure cli获取您的VM IP而不是模板。如果您的cli位于Linux上,则可以在创建VM后使用以下命令 azure vm show -g shui123 -n shui|grep "Public I

我已经创建了ARM模板来部署Azure VM和HDI集群。我想在部署完成后获取并列出Azure VM的公共IP和HDI cluster headnode的私有IP

有没有一种方法可以使用ARM模板获得它

有没有一种方法可以使用ARM模板获得它

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

azure vm show -g shui123 -n shui|grep "Public IP address"| awk -F: '{print $3}'
我想获取并列出Azure VM的公共IP和HDI的私有IP 部署完成后的群集头节点

Azure虚拟机的公共IP是什么意思?只有虚拟机还是HDI集群中的虚拟机

如果它只是一个VM,您可以使用上面的命令,如果它是HDI集群中的VM,Azure HDInsight集群将不允许向其分配任何公共IP。如果需要将IP分配给HDInsight群集,则必须在VNET中创建HDInsight。下面的文章确实讨论了

您可以使用​安巴里​重新​装货单​美联社​一,

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
有没有一种方法可以使用ARM模板获得它

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

azure vm show -g shui123 -n shui|grep "Public IP address"| awk -F: '{print $3}'
我想获取并列出Azure VM的公共IP和HDI的私有IP 部署完成后的群集头节点

Azure虚拟机的公共IP是什么意思?只有虚拟机还是HDI集群中的虚拟机

如果它只是一个VM,您可以使用上面的命令,如果它是HDI集群中的VM,Azure HDInsight集群将不允许向其分配任何公共IP。如果需要将IP分配给HDInsight群集,则必须在VNET中创建HDInsight。下面的文章确实讨论了

您可以使用​安巴里​重新​装货单​美联社​一,

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

对于所提出的问题,上述解决方案是好的。但是,理想情况下,您不应该使用HDI集群头节点的私有IP。这是因为如果主机节点(运行它的虚拟机)发生故障,私有IP将发生变化。头部节点的FQDN(完全限定域名)概念如下:
hn0 van.0owcbllr5hze3hxdja3mqlrhe.ex.internal.cloudapp.net
hn1 van.0owcbllr5hze3hxdja3mqlrhe.ex.internal.cloudapp.net
。使用这些FQDN代替所有IP地址。他们的DNS解析由Azure vnet默认DNS解析程序自动处理。所以不用担心

获取FQDN:
az网络nic列表--资源组

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

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


参考资料:

对于所问问题,上述解决方案很好。但是,理想情况下,您不应该使用HDI集群头节点的私有IP。这是因为如果主机节点(运行它的虚拟机)发生故障,私有IP将发生变化。头部节点的FQDN(完全限定域名)概念如下:
hn0 van.0owcbllr5hze3hxdja3mqlrhe.ex.internal.cloudapp.net
hn1 van.0owcbllr5hze3hxdja3mqlrhe.ex.internal.cloudapp.net
。使用这些FQDN代替所有IP地址。他们的DNS解析由Azure vnet默认DNS解析程序自动处理。所以不用担心

获取FQDN:
az网络nic列表--资源组

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

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


参考:

您可以使用grep“^hn”列出头节点私有IPI,我可以使用第一个命令获取VM IP。我必须在哪里使用grep“hn”来引导节点私有IP?您可以修改脚本
echo“$HOSTNAME$IP”>test.txt
cat test.txt | grep“^hn”
@karan您的意思是只想列出VM私有IP吗?如果虚拟机在HDI中,您无法使用azure cli获取IP,您需要使用API。@karan如果它只是一个虚拟机,您可以使用azure cli列出私有IP。您可以使用grep“^hn”列出头节点私有IP。我可以使用第一个命令获取虚拟机IP。我必须在哪里使用grep“hn”来引导节点私有IP?您可以修改脚本
echo“$HOSTNAME$IP”>test.txt
cat test.txt | grep“^hn”
@karan您的意思是只想列出VM私有IP吗?如果虚拟机在HDI中,您无法使用azure cli获取IP,您需要使用API。@karan如果它只是一个虚拟机,您可以使用azure cli列表专用IP。