쿼리를 사용하여 가상 머신 정보 가져오기

이제 VM을 만들었으므로 VM에 대한 자세한 정보를 검색할 수 있습니다. 리소스에서 정보를 가져오기 위한 일반적인 명령은 show입니다.

az vm show --name $vmName --resource-group $resourceGroup

Virtual Machine에는 시각적으로 구문 분석하기 어려울 수 있는 많은 속성이 있습니다. 반환된 JSON에는 인증, 네트워크 인터페이스, 스토리지 등이 포함됩니다. 가장 중요한 것은 VM이 연결된 리소스에 대한 Azure 개체 ID를 포함하고 있다는 것입니다. 개체 ID를 사용하면 이러한 리소스에 직접 액세스하여 VM의 구성 및 기능에 대한 자세한 정보를 얻을 수 있습니다.

개체 ID를 추출하기 위해 인수가 --query 사용됩니다. 쿼리는 JMESPath 쿼리 언어로 작성됩니다. 먼저 NIC(네트워크 인터페이스 컨트롤러) 개체 ID를 가져오기로 시작합니다.

az vm show --name $vmName \
  --resource-group $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  --output tsv

쿼리를 추가하는 것만으로도 많은 작업이 진행됩니다. 각 부분은 출력 JSON의 키를 참조하거나 JMESPath 연산자입니다.

  • networkProfile 는 하위 키로 포함된 networkInterfaces 최상위 JSON의 키입니다. JSON 값이 사전인 경우 해당 키는 연산자를 사용하여 부모 키 . 에서 참조됩니다.
  • 값은 networkInterfaces 배열이므로 연산자로 [] 평면화됩니다. 이 연산자는 각 배열 요소에서 쿼리의 re기본der를 실행합니다. 이 경우 모든 배열 요소의 id 값을 가져옵니다.

출력 형식 tsv (탭으로 구분된 값)은 결과 데이터와 탭 및 줄 바꿈으로 구성된 공백만 포함하도록 보장됩니다. 반환된 값은 단일 bare 문자열이므로 셸 변수에 직접 할당하는 것이 안전합니다.

Azure CLI 출력 쿼리에 대한 자세한 내용은 JMESPath 쿼리를 사용하여 Azure CLI 명령 출력을 쿼리하는 방법을 참조 하세요.

이제 NIC 개체 ID를 셸 변수에 할당합니다.

nicId=$(az vm show \
  -n $vmName \
  -g $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  -o tsv)

이 예제에서는 짧은 인수 사용 예를 보여줍니다. 대신 , -n 대신 사용할 수 있습니다 --resource-group--output-g-o.--name