
Quiero implementar un conjunto de escalado en dos regiones diferentes en Azure desde una imagen de máquina virtual personalizada. He descubierto cómo hacerlo, pero me gustaría cambiar la información de configuración según la región en la que se implemente el conjunto de escalado. ¿Cómo puedo detectar la región de una máquina virtual desde esa máquina virtual?
La máquina virtual ejecuta CentOS.
Respuesta1
Existe una forma sencilla y agradable de hacer esto: utilizar el servicio de metadatos dentro de la VM. Puede ejecutar este comando desde dentro de la VM (la URL es la misma para todas las VM)
curl -H Metadata:true http://169.254.169.254/metadata/instance?api-version=2017-03-01
y devolverá un objeto json con datos sobre la VM, incluida la región:
{
"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"
}
]
}
}
Respuesta2
Usarjqpara obtener solo el nombre de la región
curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/compute?api-version=2021-02-01" | jq '.location'