![](/img/trans.png)
[英]Azure Multiple Public IPs on a Virtual Machine Scale Set with Resource Manager
[英]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.