다음을 통해 공유


Azure CLI를 성공적으로 사용하기 위한 팁

Azure CLI는 여러 셸 환경에서 Azure 리소스를 구성하고 관리할 수 있는 명령줄 도구입니다. 선호하는 셸 환경을 선택하고 Azure CLI를 설치한 후 이 문서를 사용하여 일반적인 문제를 방지하고 Azure CLI를 성공적으로 사용하는 방법에 대한 유용한 팁을 검색합니다.

특정 Azure CLI 명령에 대한 자세한 내용은 Azure CLI 참조 목록을 참조하세요.

스크립팅 언어 선택

Azure CLI는 여러 스크립팅 언어로 실행할 수 있는 오픈 소스 도구입니다.

  • Azure CLI 명령에 대한 따옴표, 이스케이프 문자 및 줄 연속 규칙을 결정하는 스크립팅 언어입니다.
  • 언어 간에 작은따옴표 또는 큰따옴표, 이스케이프 문자 또는 줄 연속 문자를 포함하는 Azure CLI 명령 구문을 복사하는 것은 어려울 수 있습니다.
  • Azure CLI에 대한 대부분의 Microsoft 설명서는 Bash에서 작성 및 테스트됩니다.
  • PowerShell이 원하는 스크립팅 언어인 경우 네이티브 PowerShell 스크립팅 언어 기능이 있는 도구인 Azure PowerShell을 사용하는 것이 좋습니다.

Azure CLI의 언어 옵션 스크립팅에 대한 자세한 내용은 올바른 명령줄 도구 선택을 참조 하세요.

FAQ

다음은 가장 자주 묻는 Azure CLI 질문에 대답하는 데 도움이 되는 몇 가지 링크입니다.

문서 링크가 있는 제목 영역
프록시 뒤에서 작업 프록시 서버를 통해 작업하는 방법에 대한 정보입니다.
WAM(웹 계정 관리자) WAM 및 이를 사용하지 않도록 설정하는 방법에 대한 정보입니다.
구성 설정 사용 가능한 Azure CLI 구성 설정 목록, Azure CLI 기능을 설정/해제하고 기본값을 설정하는 방법.
출력 형식 Azure 리소스 ID를 변수에 저장하고 Azure CLI 명령에서 반환된 비밀을 보호하는 방법에 대한 지침입니다.
문자열에 JSON 값 전달 JSON 매개 변수 값에 대한 따옴표 예제입니다.
지원 수명 주기 지원되는 운영 체제, 스크립팅 언어 및 Azure CLI 버전 및 종속성에 대한 서비스 종료에 대한 정보입니다.
REST API 특정 Azure CLI 명령을 Azure 리소스에 사용할 수 없는 경우 사용할 대체 az rest 명령입니다.
Azure CLI 참조 그룹 하위 그룹 및 모든 Azure CLI 명령에 대한 드릴다운이 있는 Azure CLI 참조 그룹의 To Z 목록입니다.
Azure CLI 문서 Azure CLI 참조 명령을 사용하는 빠른 시작, 방법 가이드 및 자습서의 To Z 목록입니다. 목록은 쉽게 검색할 수 있는 참조 그룹 및 하위 그룹별로 그룹화됩니다.
Azure CLI 샘플 Azure-samples/azure-cli-samples GitHub 리포지토리의 샘플을 포함하여 샘플의 A-Z 목록입니다.
문제 해결 오류 원인 및 수정 팁.
새로운 기능 새 Azure CLI 기능에 대한 간단한 요약입니다.

다른 명령에 값 전달

값이 두 번 이상 사용되는 경우 변수에 할당합니다. 변수를 사용하면 값을 여러 번 사용하거나 보다 일반적인 스크립트를 만들 수 있습니다. 다음은 az vm list 명령에서 찾은 ID를 변수에 할당하는 예제입니다.

# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM running'].id" --output tsv)

# verify the value of the variable
echo $running_vm_ids

값이 한 번만 사용되는 경우 파이핑을 사용하는 것이 좋습니다. (파이핑은 한 명령의 출력을 두 번째 명령에 대한 입력으로 전달합니다.)

az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm

다중 값 목록의 경우 다음 옵션을 고려합니다.

  1. 결과에 대한 추가 제어가 필요한 경우 "for" 루프를 사용합니다.
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id"   -output tsv); do
    echo stopping $vmList
    az vm stop --ids $vmList
    if [ $? -ne 0 ]; then
        echo "Failed to stop $vmList"
        exit 1
    fi
    echo $vmList stopped
done
  1. 또는 성능을 향상시키기 위해 xargs를 사용하고, -P 플래그를 사용하여 작업을 병렬로 실행하는 것이 좋습니다.
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. 마지막으로, Azure CLI는 xargs의 동일한 효과를 얻기 위해 여러 --ids 명령을 병렬로 처리하는 기본 제공 지원을 제공합니다. @- 는 파이프에서 값을 가져오는 데 사용됩니다.
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

루프, 사례 문, if..then..else 및 오류 처리를 포함하여 Azure CLI에서 Bash 구문을 사용하는 방법에 대한 자세한 내용은 Azure CLI에서 Bash를 사용하는 방법 알아보기를 참조하세요.

일반적인 업데이트 매개 변수

Azure CLI 명령 그룹은 update 명령을 종종 사용합니다. 예를 들어, Azure Virtual Machines에는 az vm update 명령이 포함됩니다. 대부분의 업데이트 명령은 세 가지 --add--set--remove일반적인 매개 변수를 제공합니다.

--set--add 매개 변수는 공백으로 구분된 키-값 쌍 목록(key1=value1 key2=value2)을 사용합니다. 업데이트할 수 있는 속성을 확인하려면 az vm show와 같은 show 명령을 사용합니다.

az vm show --resource-group VMResources --name virtual-machine-01

명령을 간소화하려면 JSON 문자열을 사용하는 것이 좋습니다. 예를 들어 새 데이터 디스크를 가상 머신에 연결하려면 다음 값을 사용합니다.

az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
   {\"id\":
   \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
   \"lun\": 1}"

일반 리소스 명령

작업하려는 서비스에 Azure CLI가 지원되지 않을 수 있습니다. az resource 또는 az rest 명령을 사용하여 이러한 리소스를 사용할 수 있습니다.

동시 실행

동일한 컴퓨터에서 동시에 Azure CLI 명령을 실행하는 경우 여러 Azure CLI 명령이 동일한 MSAL(Microsoft 인증 라이브러리) 토큰 캐시에 쓰는 경우 쓰기 충돌이 발생할 수 있습니다.

잠재적인 오류를 방지하려면 각 스크립트의 환경 변수 AZURE_CONFIG_DIR 를 별도의 디렉터리로 설정하여 각 스크립트에 대한 Azure CLI 구성 폴더를 격리합니다. 해당 스크립트의 Azure CLI 명령은 구성 및 토큰 캐시를 기본 ~/.azure 폴더 대신 구성된 위치에 저장합니다.

export AZURE_CONFIG_DIR=/my/config/dir

비동기 작업

Azure에서 작업을 수행하려면 상당한 시간이 걸릴 수 있습니다. 예를 들어, 데이터 센터에서 가상 머신을 구성하는 것은 즉시 이루어지지 않습니다. Azure CLI는 명령이 완료되어 다른 명령을 수락할 때까지 기다립니다. 따라서 많은 명령은 다음과 같은 --no-wait 매개 변수를 제공합니다.

az group delete --name MyResourceGroup --no-wait

리소스 그룹을 삭제하면 해당 그룹에 속한 모든 리소스도 제거됩니다. 이러한 리소스를 제거하는 데 시간이 오래 걸릴 수 있습니다. 매개 변수를 사용하여 명령을 --no-wait 실행하면 콘솔에서 제거를 중단하지 않고 새 명령을 수락합니다.

많은 명령이 대기 옵션을 제공하여 일부 조건이 충족될 때까지 콘솔을 일시 중지합니다. 다음 예제는 az vm wait 명령을 사용하여 독립 리소스를 병렬로 생성할 수 있도록 지원합니다.

az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait

subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id

두 ID를 모두 만든 후 콘솔을 다시 사용할 수 있습니다.

스크립트 예제

다음은 Azure Virtual Machines로 작업할 때 변수를 사용하고 목록을 반복하는 예제입니다. 루프, 사례 문, if..then..else 및 오류 처리를 포함하여 Azure CLI에서 Bash 구문을 사용하는 방법에 대한 자세한 예제는 Azure CLI에서 Bash를 사용하는 방법 알아보기를 참조하세요.

다음 스크립트를 사용하여 변수에 ID를 저장합니다.

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
   `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    SET "vm_ids=%%F %vm_ids%"  :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel

다음 스크립트를 사용하여 목록을 반복합니다.

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
    `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    ECHO Stopping %%F
    az vm stop --ids %%F
)

참고 항목