Azure – Region der virtuellen Maschine auf der virtuellen Maschine erkennen

Azure – Region der virtuellen Maschine auf der virtuellen Maschine erkennen

Ich möchte einen Skalierungssatz in zwei verschiedenen Regionen auf Azure aus einem benutzerdefinierten VM-Image bereitstellen. Ich habe herausgefunden, wie das geht, aber ich möchte die Konfigurationsinformationen je nach Region, in der der Skalierungssatz bereitgestellt wird, ändern. Wie kann ich die Region einer VM anhand dieser VM erkennen?

Auf der virtuellen Maschine läuft CentOS.

Antwort1

Es gibt eine schöne, einfache Möglichkeit, dies zu tun: Verwenden Sie den Metadatendienst innerhalb der VM. Sie können diesen Befehl innerhalb der VM ausführen (die URL ist für alle VMs gleich).

curl -H Metadata:true http://169.254.169.254/metadata/instance?api-version=2017-03-01

und es wird ein JSON-Objekt mit Daten zur VM zurückgegeben, einschließlich der Region:

{
  "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"
      }
    ]
  }
}

Antwort2

Verwendenjqum nur den Regionsnamen zu erhalten

curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/compute?api-version=2021-02-01" | jq '.location'

verwandte Informationen