Поделиться через


Советы по эффективному использованию Azure CLI

Azure CLI — это интерфейс командной строки, который позволяет настраивать ресурсы Azure и управлять ими из многих сред оболочки. Выбрав предпочтительную среду оболочки и установив Azure CLI, используйте эту статью, чтобы узнать, как избежать распространенных ошибок и успешно использовать Azure CLI.

Дополнительные сведения о конкретных командах Azure CLI см. в справочном списке Azure CLI.

Выбор языка сценариев

Azure CLI — это средство открытый код, которое можно запускать на многих языках сценариев.

  • Это язык сценариев, определяющий правила продолжения кавыка, escape-символов и строк для команд Azure CLI.
  • Это может быть сложно скопировать синтаксис команды Azure CLI, содержащий одинарные или двойные кавычки, escape-символы или символы продолжения строки между языками .
  • Большая часть документации Майкрософт по Azure CLI написана и протестирована в Bash.
  • Если PowerShell является выбранным языком сценариев, рекомендуется использовать средство Azure PowerShell, которое имеет собственные функции языка сценариев PowerShell .

Дополнительные сведения о параметрах языка сценариев для Azure CLI см. в разделе "Выбор правильного средства командной строки".

Вопросы и ответы

Ниже приведены некоторые ссылки, которые помогут вам ответить на наиболее часто задаваемые вопросы о Azure CLI:

Область темы со ссылкой на статью Совет
Диспетчер веб-учетных записей (WAM) Сведения о WAM и его отключении.
Параметры конфигурации Список доступных параметров конфигурации Azure CLI, включение и отключение функций Azure CLI и установка значений по умолчанию.
Форматы входных данных Инструкции по хранению идентификаторов ресурсов Azure в переменных и защите секретов, возвращаемых командами Azure CLI.
Передача значений JSON в строке Примеры для значений параметров JSON.
Жизненный цикл поддержки Сведения о поддерживаемых операционных системах, языках сценариев и конце службы для версий и зависимостей Azure CLI.
REST API Альтернативная команда az rest , используемая, если определенная команда Azure CLI недоступна для ресурса Azure.
Справочные группы Azure CLI Список ссылочных групп Azure CLI с детализацией до подгрупп и всех команд Azure CLI.
Статьи Azure CLI Список кратких руководств, руководств и учебников по Azure CLI, использующих справочные команды Azure CLI. Список группируется по ссылочной группе и подгруппе для простого поиска.
Примеры Azure CLI Список примеров по Z, включая эти примеры в репозитории GitHub в Azure-samples/azure-cli-samples.
Устранение неполадок Советы по устранению ошибок и устранению ошибок.
Новые возможности Краткое описание новых функций Azure CLI.

Передача значений в другую команду

Если значение используется несколько раз, назначьте его переменной. Переменные позволяют использовать эти значения по несколько раз или создавать обобщенные скрипты. В этом примере в переменную сохраняется идентификатор, полученный командой az vm list.

# 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

Если значение используется только один раз, лучше использовать вертикальную черту. (Piping передает выходные данные одной команды в качестве входных данных второй команде.)

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 имеет встроенную поддержку параллельного выполнения для команд с несколькими --ids. Это дает результат, аналогичный применению xargs. @- используется для получения значений из канала:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Дополнительные сведения об использовании конструкций Bash с Azure CLI, включая циклы, операторы case, if...then...else и обработку ошибок, см. статью Обучение работе с Bash с помощью Azure CLI.

Общие параметры обновления

Группы команд Azure CLI часто включают команду обновления (update). Например, для Виртуальных машин Azure поддерживается команда az vm update. Большинство команд обновления предлагают три распространенных параметра: --add, --setи --remove.

Параметры --set и --add принимают список пар "ключ — значение", разделенных пробелами: key1=value1 key2=value2. Просмотреть доступные для изменения свойства можно с помощью команды az vm 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 commands.

Параллельное выполнение

При одновременном выполнении команд Azure CLI на одном компьютере могут возникать конфликты записи, если несколько команд Azure CLI записываются в один кэш маркеров библиотеки проверки подлинности Майкрософт (MSAL).

Чтобы избежать потенциальных сбоев, изолируйте папку конфигурации Azure CLI для каждого сценария, задав переменную AZURE_CONFIG_DIR среды для каждого скрипта в отдельный каталог. Команды Azure CLI в этом сценарии сохраняют конфигурацию и кэш маркеров в настроенном расположении вместо папки по умолчанию ~/.azure .

export AZURE_CONFIG_DIR=/my/config/dir

Асинхронные операции

Операции в Azure иногда занимают значительное время. Например, настройка виртуальной машины в центре обработки не может выполняться мгновенно. Azure CLI ожидает завершения команды, чтобы принять другие команды. Поэтому многие команды предлагают параметр --no-wait, как показано ниже:

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

При удалении группы ресурсов все ресурсы, принадлежащие к ней, также удаляются. Удаление этих ресурсов может занять много времени. При выполнении команды с --no-wait параметром консоль принимает новые команды без прерывания удаления.

Многие команды поддерживают параметр 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

Вы снова сможете использовать консоль, когда будут созданы оба идентификатора.

Примеры скриптов

Ниже приведены примеры использования переменных и циклического перебора списков при работе с Виртуальными машинами Azure. Подробные сведения об использовании конструкций Bash с Azure CLI, включая циклы, операторы case, if...then...else и обработку ошибок, см. статью Обучение работе с Bash с помощью Azure CLI.

Используйте эти скрипты для сохранения идентификаторов в переменных:

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
)

См. также