Azure - 가상 머신에서 가상 머신 영역 감지

Azure - 가상 머신에서 가상 머신 영역 감지

사용자 지정 가상 머신 이미지를 통해 Azure의 서로 다른 두 지역에 확장 집합을 배포하려고 합니다. 그 방법을 알아봤지만 확장 집합이 배포되는 지역에 따라 구성 정보를 전환하고 싶습니다. 해당 가상 머신에서 가상 머신의 지역을 어떻게 감지할 수 있나요?

가상 머신이 CentOS를 실행 중입니다.

답변1

이를 수행하는 아주 쉬운 방법이 있습니다. VM 내부의 메타데이터 서비스를 사용하는 것입니다. VM 내부에서 이 명령을 실행할 수 있습니다(URL은 모든 VM에 대해 동일함).

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

지역을 포함하여 VM에 대한 데이터가 포함된 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'

관련 정보