Упражнение. Интерактивное создание ресурса Azure с помощью Azure CLI

Завершено

В исходном сценарии необходимо создать виртуальные машины (виртуальные машины) для тестирования программного обеспечения управления отношениями клиентов (CRM). Когда новая сборка доступна, необходимо развернуть новую виртуальную машину для тестирования всего процесса установки из чистого образа. После завершения тестирования можно удалить виртуальную машину.

Давайте попробуем создать виртуальную машину.

Упражнение. Создание виртуальной машины Linux с помощью Azure CLI

Так как вы используете песочницу Azure, вам не нужно создавать группу ресурсов. Вместо этого используйте существующую группу ресурсов песочницы [имя группы ресурсов песочницы]. Помните об ограничениях расположения.

Вот как создать новую виртуальную машину Azure с помощью Azure CLI:

  1. az vm create Используйте команду для создания виртуальной машины.

    • az group list Используйте команду, чтобы получить имя группы ресурсов песочницы.

    • Назначьте имя виртуальной машине, следуя стандартам именования вашей организации.

    • Выберите расположение, близкое к вам из списка доступных расположений песочницы Azure:

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Используйте образ Linux: Ubuntu2204

    • Назначьте имя администратора после стандартов именования вашей организации.

    #!/bin/bash
    
    # Get the single resource group name created by the sandbox.
    rgName=$(az group list --query "[].{Name:name}" --output tsv)
    echo $rgName
    
    # Create additional variables with values of your choice.
    vmName="msdocs-vm-01"
    vmLocation="westus"
    vmImage="Ubuntu2204"
    vmAdminUserName="myAzureUserName"
    
    # Create the VM
    az vm create \
      --resource-group $rgName \
      --name $vmName \
      --location $vmLocation \
      --image $vmImage \
      --public-ip-sku Standard \
      --admin-username $vmAdminUserName \
      --generate-ssh-keys
    

    Совет

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

    Чтобы вставить в Azure Cloud Shell, щелкните правой кнопкой мыши новую строку в терминале Cloud Shell и выберите "Вставить" или используйте сочетание клавиш SHIFT+Insert ("+V в macOS").

    Если скрипт не скопировать правильно, а терминал песочницы ожидает добавления входных данных, используйте CTRL+Z , чтобы вернуться к запросу и повторить попытку.

  2. Дождитесь создания виртуальной машины Linux:

    Процесс создания виртуальной машины занимает несколько минут.

  3. Получение информации о виртуальной машине

    По завершении Azure CLI возвращает сведения о виртуальной машине в формате JSON. az vm list Используйте команды для az vm show получения определенных сведений о виртуальной машине. Далее приводятся некоторые примеры.

    В некоторых из этих скриптов используются имена и значения переменных, хранящиеся на предыдущих шагах.

    Получение списка всех виртуальных машин в формате таблицы.

    az vm list --output table
    

    Получение сведений об одной виртуальной машине в формате JSON.

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

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

    Получение сведений о свойствах виртуальной машины.

    # Get the time the VM was created
    az vm show --resource-group $rgName --name $vmName --query "timeCreated"
    
    # Get the OS disk storage account type
    az vm show --resource-group $rgName --name $vmName --query "storageProfile.osDisk.managedDisk.storageAccountType"
    

    Сохраните свойство виртуальной машины в переменной.

    Azure CLI имеет несколько доступных типов выходных данных. JSON — это значение по умолчанию, но при хранении значений в переменных удалите дополнительное форматирование.--output tsv

    #!/bin/bash
    # Store the VM id
    vmID=$(az vm show --resource-group $rgName --name $vmName --query id --output tsv)
    echo $vmID
    
    # Store the public IP address
    publicIP=$(az vm list-ip-addresses \
        --resource-group $rgName \
        --name $vmName \
        --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv)
    echo $publicIP
    
  4. Подключение к виртуальной машине.**

    #!/bin/bash
    az ssh vm --private-key-file \path\to\private\key \
        --resource-group $rgName \
        --name $vmName \
        --local-user $vmAdminUserName
    

    Выйдите, введя выход.

Дополнительные сведения о параметрах виртуальной машины

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

Совет

Формат Azure CLI --output table не возвращает 100% доступных сведений, но зачастую упрощает чтение больших результатов команд. --query Используйте параметр, чтобы указать сведения, в которых вы наиболее заинтересованы.

  1. Получение доступных размеров виртуальных машин для расположения:

    az vm list-sizes --location westus --output table
    
  2. Получение доступных номеров SKU для расположения:

    В зависимости от --location выбранного варианта может потребоваться несколько минут, чтобы Azure CLI вернул полный список номеров SKU.

    # virtual machines
    az vm list-skus --location westus --resource-type virtualMachines --output table
    
    # disks
    az vm list-skus --location westus --resource-type disks --output table
    
  3. Получение доступных параметров изменения размера для существующей виртуальной машины:

    az vm list-vm-resize-options --resource-group $rgName --name $vmName --output table
    
  4. Отображение сведений обо всех виртуальных машинах в группе ресурсов.**

    Если вы решили работать в локальной среде и иметь несколько виртуальных машин в подписке, запросите виртуальные машины, соответствующие критериям фильтра.

    #!/bin/bash
    # details of all VMs in a specified resource group
    az vm show --show-details --ids $(az vm list --resource-group $rgName --query "[].id" -o tsv)
    
    # list of all VMs created in the last 7 days
    createDate=$(date +%F -d "-7days")
    az vm list --resource-group $rgName \
            --query "[?timeCreated >='$createDate'].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
            --output table
    
    # list all VMs whose disks are of a certain type
    # first get a list of the disk types or organization is using
    az vm list --resource-group $rgName --query "[].{Name:name, osDiskSize:storageProfile.osDisk.diskSizeGb, managedDiskTypes:storageProfile.osDisk.managedDisk.storageAccountType}" --output table
    
    diskType="Premium_LRS"
    az vm list --resource-group $rgName \
            --query "[?storageProfile.osDisk.managedDisk.storageAccountType =='$diskType'].{Name:name, admin:osProfile.adminUsername, osDiskSize:storageProfile.osDisk.diskSizeGb, CreatedOn:timeCreated, vmID:id}" \
            --output table
    

Остановка или удаление виртуальной машины

  1. Завершение работы виртуальной машины:

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

    az vm stop --resource-group $rgName --name $vmName
    

    Введите Y и нажмите клавишу ВВОД, когда появится запрос на продолжение.

  2. Освобождение виртуальной машины:

    Чтобы избежать выставления счетов за остановленную виртуальную машину, ее можно освободить. Освобожденные виртуальные машины содержат ресурсы, которые больше не выделены (плата больше не применяется). Состояние виртуальной машины изменяется с "Остановлено" на "Остановлено (освобождено)".

    az vm deallocate --resource-group $rgName --name $vmName
    
  3. Удаление виртуальной машины:

    После остановки виртуальной az vm delete машины удалите ее, выполнив команду.

    az vm delete --resource-group $rgName --name $vmName
    

    Введите Y и нажмите клавишу ВВОД, когда появится запрос на продолжение.

При интерактивном выполнении этих команд лучше всего создать скрипт Azure CLI. Скрипты позволяют повторно использовать логику для создания или удаления виртуальной машины в будущем.

В следующем уроке давайте автоматизируем эти задачи с помощью скрипта Azure CLI.