company_banner

Управление виртуальными машинами Azure с помощью PowerShell

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



    Установка Azure PowerShell и подключение к подписке


    Начать следует с установки самого модуля PowerShell для управления Azure. Процесс установки предельно прост. Нужно скачать Microsoft Web Platform Installer, запустить его и установить Microsoft Azure PowerShell с Microsoft Azure SDK. Помимо модулей будет установлена также настроенная консоль Azure PowerShell.

    Следующим шагом необходимо подключиться к вашей подписке Azure. Подключение можно осуществить двумя способами:
    • Azure Active Directory. Этот способ аутентификации является рекомендуемым по той причине, что он облегчает процесс управления доступом к вашей подписке Azure. В этом методе вы используете ваш аккаунт Microsoft (или ваш рабочий аккаунт) для входа в систему. Azure Active Directory проверяет данные и возвращает маркер доступа, который и позволит вам управлять вашей подпиской Azure с помощью PowerShell.
    • Сертификат управления. В случае если вы используете сертификат управления, важно помнить, что доступ к вашей подписке с помощью PowerShell будет действителен до тех пор, пока действителен ваш сертификат. Тем не менее, этот метод более сложен в случае управления общим доступом к подписке. Кроме того, Azure Resource Manager API не принимает проверку подлинности сертификата.
    Далее рассмотрим весь процесс подключения к подписке обоими методами.

    Совсем забыла сказать. Вы можете использовать Azure PowerShell для того, чтобы управлять подпиской Azure. Но использовать несколько разных PowerShell не всегда удобно. Можно легко импортировать модуль Azure PowerShell в Windows PowerShell. Если вы хотите знать как, загляните под спойлер.

    Как импортировать модуль Azure PowerShell в Windows PowerShell
    Запускаем Windows PowerShell с правами Администратора и используем всего два командлета:
    Set-ExecutionPolicy RemoteSigned
    Import-Module “C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Azure.psd1”
    

    С помощью первого командлета мы определяем, что все скачанные сценарии PowerShell должны быть подписаны доверенным издателем прежде, чем они будут запущены. Ну а вторым командлетом мы импортируем модуль Azure PowerShell в Windows PowerShell.



    Azure AD

    1. Запускаем консоль Azure PowerShell
    2. Запускаем командлет
    Add-AzureAccount
    

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

    Далее вам будет необходимо ввести пароль от вашей учетной записи. Azure аутентифицирует вас в системе, сохранит данные для доступа и закроет окно. В PowerShell вы сможете увидеть результат работы командлета:

    Теперь Azure PowerShell успешно подключен к вашей подписке и вы можете приступать к работе.

    Сертификат управления

    1. Зайдите на портал управления Azure и запустите консоль Azure PowerShell
    2. В консоли введите командлет:
    Get-AzurePublishSettingsFile
    

    Этот командлет откроет веб-страницу на портале управления Azure, с которой вы сможете загрузить информацию о вашей подписке.
    1. Загрузите и сохраните файл “*.publishsettings, в котором содержится сертификат управления.
    2. Теперь импортируем файл с помощью командлета
    Import-AzurePublishSettingsFile C:\Users\<UserProfile>\Downloads\<SubscriptionName>-credentials.publishsettings
    



    На этом процесс подключения Azure PowerShell к вашей подписке завершен, и можно приступать к дальнейшей работе.

    Создание виртуальных машин


    Прежде, чем начать работать с виртуальной машиной в Azure, её нужно создать. Для этого выполним несколько простых шагов.
    Сначала необходимо установить вашу подписку Azure и аккаунт хранилища. Для того, чтобы узнать имя подписки, используем командлет:
    Get-AzureSubscription
    

    Имя аккаунта хранилища:
    Get-AzureStorageAccount
    


    Теперь установим:
    Select-AzureSubscription –SubscriptionName “Visual Studio Ultimate with MSDN”
    Set-AzureSubscription –SubscriptionName “Visual Studio Ultimate with MSDN” –CurrentStorageAccountName “portalvhdsbs5v2wvyhthcq”
    


    Теперь необходимо выбрать ImageFamily или значение метки для конкретного образа, соответствующего виртуальной машине Azure, которую вы хотите создать. Вот некоторые примеры образов из галереи Azure Management Portal.

    Увидеть список доступных образов можно с помощью командлета:
    Get-AzureVMImage | select ImageFamily –Unique
    

    Иногда, имя образа скрыто в свойстве Label, а не в ImageFamily. Поэтому если вы не нашли нужный образ после поиска по ImageFamily, попробуйте запустить следующий командлет:
    Get-AzureVMImage | select Label -Unique
    

    После того, как мы определились с образом, можно приступать к созданию виртуальной машины. Для этого я рекомендую использовать скрипт, хотя можно и вводить команды построчно в обычном Windows PowerShell.
    $family="Windows Server 2012 R2 Datacenter"
    $image=Get-AzureVMImage | where { $_.ImageFamily -eq $family } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1
    $vmname="mvademovm"
    $vmsize="Small"
    $availset="mvademovm_avs"
    $vm1=New-AzureVMConfig -Name $vmname -InstanceSize $vmsize -ImageName $image -AvailabilitySetName $availset
    $cred=Get-Credential -Message "Type the name and password of the local administrator account."
    $vm1 | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.GetNetworkCredential().Username -Password $cred.GetNetworkCredential().Password
    New-AzureVM –Location "North Europe" -VMs $vm1 
    

    Теперь поясню, что же в этом скрипте происходит.
    Сначала мы указываем имя образа виртуальной машины, которое мы получили при выводе командлета Get-AzureVMImage | select ImageFamily –Unique. С тем же успехом его можно заменить на имя Label. Далее мы выбираем самый последний образ, который имеется в галерее Microsoft Azure из этого семейства образов.
    $family="Windows Server 2012 R2 Datacenter"
    $image=Get-AzureVMImage | where { $_.ImageFamily -eq $family } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1
    

    Следующим шагом указываем имя будущей виртуальной машины, выбираем ее размер (выбрать можно из Small, Medium, Large, ExtraLarge, A5, A6, A7, A8, A9), указываем имя группы доступности (availability set). В заключение, на основе все этих свойств мы формируем саму виртуальную машину.
    $vmname="mvademovm"
    $vmsize="Small"
    $availset="mvademovm_avs"
    $vm1=New-AzureVMConfig -Name $vmname -InstanceSize $vmsize -ImageName $image -AvailabilitySetName $availset
    

    Далее мы указываем логин и пароль для локального администратора:
    $cred=Get-Credential -Message "Type the name and password of the local administrator account."
    $vm1 | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.GetNetworkCredential().Username -Password $cred.GetNetworkCredential().Password
    

    При выполнении скрипта появится окно, в котором мы должны будем ввести логин и пароль:

    Наконец, с помощью последнего командлета, мы создаем новую виртуальную машину в новой облачной службе:
    New-AzureVM –Location "North Europe" -VMs $vm1 
    

    Мы указываем желаемую локацию и можем выбирать из Central US, East US, East US 2, South Central US, West US, North Europe, West Europe, East Asia, Southeast Asia, Japan West, Japan East.
    Также при запуске этого командлета нужно будет ввести имя для создаваемой облачной службы. Ждем несколько минут, и виртуальная машина Azure готова!

    Эту же виртуальную машину мы можем увидеть и портале:


    Включение, выключение, удаление


    Если создание виртуальной машины требует определенной последовательности шагов, то для ее удаления достаточно всего лишь одного командлета:
    Remove-AzureVM -ServiceName "mvademovm" -Name "mvademovm" -DeleteVHD
    


    Одной из ситуаций, когда удобнее использовать Azure PowerShell для управления виртуальной машиной, чем заходить на Azure Management Portal, является включение и выключение. Задача эта решается двумя скриптами:
    запуск виртуальной машины
    Start-AzureVM -ServiceName "mvademovm" -Name "mvademovm"
    

    выключение виртуальной машины
    Stop-AzureVM -ServiceName "mvademovm" -Name "mvademovm" -Force
    


    Основные примеры управления виртуальными машинами с помощью Microsoft Azure мы рассмотрели. С подробным списком командлетов Azure PowerShell вы можете ознакомиться здесь.
    Надеюсь, информация в этой статье будет вам полезна!
    Удачи в применение PowerShell для настройки ваших систем!

    Полезные ссылки


    Microsoft
    Microsoft — мировой лидер в области ПО и ИТ-услуг

    Similar posts

    Comments 7

      0
      Сильно ли отличается менеджмент Linux-based виртуальных машин в плане настройки и создания через PowerShell?
        0
        На самом деле, не особенно. Только вам образ нужно выбрать Linux, и дальше вот так:

        $linuxuser = '[CHOOSE-USERNAME]'
        $adminPassword = '[YOUR-PASSWORD]'
        $vmname = 'mytestvm1'
        New-AzureQuickVM -Linux -ServiceName $cloudSvcName -Name $vmname -ImageName $image -LinuxUser $linuxuser
        
        
        0
        Неплохо бы такое же, только кроссплатформенное. Вот это оно? github.com/Azure/azure-xplat-cli
          0
          Да. Оно самое github.com/Azure/azure-xplat-cli
          И вот статья (правда, на английском) о том, как все установить и настроить
            0
            Ага, уже разобрался, спасибо. То, что надо.

            Еще нашел отличную библиотеку для PHP: github.com/dreamfactorysoftware/azure-sdk-for-php
          0
          Мне кажется, неплохо было бы пару слов о VIsual Studio и Azure. Они очень хорошо дружат, и для разработчиков это намного более удобный способ (да, я читал заголовок статьи, и её содержимое тоже).
            0
            А теперь давайте заглянем в код с помощью PVS-Studio :).

            Only users with full accounts can post comments. Log in, please.