在AWS中,这两个命令为我的配置提供了价值
export FQDN=`curl http://169.254.169.254/latest/meta-data/public-hostname`
export PRIVATE_FQDN=`curl http://169.254.169.254/latest/meta-data/hostname`
现在,如果我想在Azure中为Linux VM进行类似的设置,我如何使用元数据服务检索它?
我知道的一个命令是
curl -H元数据:true“http://169.254.169.254/metadata/instance?api-version=2017-08-01“
但此命令仅返回IP和计算机特定的数据,而不是Azure中的主机名。
4条答案
按热度按时间v64noz0r1#
您可以使用
curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2017-08-01"
检索示例的所有元数据。正如你所看到的,Azure不提供主机名。
所以,答案是不可能的。
不是:默认情况下,VM的主机名等于VM的名称。
9w11ddsr2#
您几乎是正确的,您的命令返回网络信息,因为您在/instance之后指定了/network。
curl -H元数据:true“http://169.254.169.254/metadata/instance?api-version=2017-08-01“
您可以在此处找到更多详细信息https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service
k5ifujac3#
该命令应该返回一个'name'值,它是VM名称,也应该是主机名。
这里的更多细节是你需要进一步阅读的。
https://learn.microsoft.com/en-us/azure/virtual-network/virtual-networks-viewing-and-modifying-hostnames
vu8f3i0k4#
从2023年起,这将无法完成。元数据API仅返回公共IP信息。有些人分享了如何从VM名称中找出DNS别名的技巧,但这实际上是不正确的-如果您通过API创建VM,则创建时不会使用任何DNS别名。您也可以将DNS别名更改为
ANYTHING.eastus.cloudapp.azure.com
,其中eastus
是VM运行的位置/区域。你可以从外部获取这个,不是从VM(这将是一个巨大的安全漏洞),而是从一个知道VM UUID并可以询问Azure DNS API的外部系统。