
Я хочу развернуть масштабируемый набор в двух разных регионах на Azure из пользовательского образа виртуальной машины. Я разобрался, как это сделать, но я хотел бы переключать информацию о конфигурации в зависимости от региона, в котором развернут масштабируемый набор. Как определить регион виртуальной машины из этой виртуальной машины?
Виртуальная машина работает под управлением CentOS.
решение1
Есть хороший простой способ сделать это, использовать службу метаданных внутри VM. Вы можете запустить эту команду изнутри VM (URL одинаков для всех VM)
curl -H Metadata:true http://169.254.169.254/metadata/instance?api-version=2017-03-01
и он вернет объект JSON с данными о виртуальной машине, включая регион:
{
"compute": {
"location": "westus",
"name": "avset2",
"offer": "UbuntuServer",
"osType": "Linux",
"placementGroupId": "",
"platformFaultDomain": "1",
"platformUpdateDomain": "1",
"publisher": "Canonical",
"resourceGroupName": "myrg",
"sku": "16.04-LTS",
"subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"tags": "",
"version": "16.04.201708030",
"vmId": "13f56399-bd52-4150-9748-7190aae1ff21",
"vmScaleSetName": "",
"vmSize": "Standard_D1",
"zone": "1"
},
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [
{
"privateIpAddress": "10.1.2.5",
"publicIpAddress": "X.X.X.X"
}
],
"subnet": [
{
"address": "10.1.2.0",
"prefix": "24"
}
]
},
"ipv6": {
"ipAddress": []
},
"macAddress": "000D3A36DDED"
}
]
}
}
решение2
Использоватьjqчтобы получить только название региона
curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/compute?api-version=2021-02-01" | jq '.location'