簡體   English   中英

如何在 Azure 規模集中獲取虛擬機的公共 DNS 名稱

[英]How to get public DNS name of a Virtual Machine in Azure Scale Set

我使用創建了 VM 規模集

az vmss create -n XXX -g XXX --image XXX --public-ip-per-vm --vm-domain-name myvmss --vm-sku Standard_B1s --instance-count 1 --admin-password XXX --admin-username XXX--authentication-type password

然后我可以使用來自 azure 門戶的鏈接 ssh 進入該 VM。

現在我需要對其進行配置,為此我需要知道分配給 VM 的公共 DNS 記錄。 我該怎么做?

我計划使用“Linux 自定義腳本”擴展來運行虛擬機的配置。

hostname返回 VM 的計算機名稱(例如mkvmsa524000001 ),我需要具有公共 IP 的完整 DNS 名稱,例如vm1.myvmss.westeurope.cloudapp.azure.com (myvmss 有來自的vm-domain-name參數上面的命令)。

如果有幫助 - 我正在使用基於 Linux 的映像。

我可以使用獲取實例的公共 IP 地址

curl -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"

但是如何獲得它的名字,例如vm-01 我可以手動添加后綴

根據這篇文章找到了一個選項 - https://msftstack.wordpress.com/2017/05/10/figuring-out-azure-vm-scale-set-machine-names/

從 VM 的主機名可以得到它在規模集中的索引:

def hostname_to_vmid(hostname):
    # get last 6 characters and remove leading zeroes
    hexatrig = hostname[-6:].lstrip('0')
    multiplier = 1
    vmid = 0
    # reverse string and process each char
    for x in hexatrig[::-1]:
        if x.isdigit():
            vmid += int(x) * multiplier
        else:
            # convert letter to corresponding integer
            vmid += (ord(x) - 55) * multiplier
        multiplier *= 36
    return vmid

可以使用 $(hostname) 找到主機名,然后將 DNS 名稱構建為

vm{index}.{vm-domain-name}.{region}.cloudapp.azure.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM