Microsoft Azure PowerShell для работы с IaaS

Введение

Еще в июне 2012 был обновлен Microsoft Azure PowerShell командлеты и к нему добавились некоторые интересные функциональные возможности для управления виртуальными машинами Microsoft Azure. В этой статье я расскажу о некоторых из новых функций по автоматизации Microsoft Azure IaaS.

Конфигурирование Microsoft Azure PowerShell

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

Import-AzurePublishSettingsFile 'c:\temp\mysub.publishsettings'

Также имеется возможность настройки профиля публикации в ручную, без скачивания файла-настроек:

$subid = '[YOUR-SUBSCRIPTION-ID]' $cert = Get-Item Cert:\CurrentUser\My\YOURCERTTHUMBPRINT Set-AzureSubscription -SubscriptionName 'testsub1' -SubscriptionId $subid -Certificate $cert

Обратите внимание, что после того, как с настройками подписки закончено – профиль публикации сохраняется по умолчанию в следующем месте: C:\Users\user\AppData\Roaming\Microsoft Azure Powershell
Это означает, что не нужно запускать Set-AzureSubscription для каждого из сценариев, так как он уже есть. Microsoft Azure PowerShell поддерживают несколько подписок, поэтому здесь можно выбрать с какой подпиской работать, командой — Select-AzureSubscription.

Настройка хранилища

Также, новым дополнением является –CurrentStorageAccount. Этот параметр позволяет указать какое хранилище использовать для ваших VM’s в работе из PowerShell. Чтобы установить хранилище необходимо выполнить следующую команду:

Get-AzureStorageAccount

Если необходимо создать StorageAccount, воспользуйтесь следующей командой:

New-AzureStorageAccount -StorageAccountName 'myuniquelynamedstorage' -Location 'East US'

Подготовка к созданию виртуальной машины из PowerShell

Перед тем как приступить к созданию VM’s в Microsoft Azure необходимо задать некоторые настройки, которые потребуются для работы из PowerShell, а именно, локация:

$dclocation = '[YOUR-LOCATION]'

Задать имя облачного сервиса, который будет выступать в качестве контейнера для VM’S:

Test-AzureName -Service '[YOUR-CLOUD-SERVICE-NAME]' $cloudSvcName = '[YOUR-CLOUD-SERVICE-NAME]'

Определить какая платформа будет использоваться в качестве основы для VM’s:

Get-AzureVMImage | select ImageName $image = '[YOUR-SELECTED-IMAGE-NAME]'

Теперь же можно приступать к созданию VM’s из PowerShell.

Быстрое создание Windows VM’s из PowerShell

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

$adminPassword = '[PASSWORD]' $vmname = 'mytestvm' New-AzureQuickVM -Windows -ServiceName $cloudSvcName -Name $vmname -ImageName $image -Password $adminPassword

Быстрое создание Linux VM’s из PowerShell

$linuxuser = '[CHOOSE-USERNAME]' $adminPassword = '[YOUR-PASSWORD]' $vmname = 'mytestvm1' New-AzureQuickVM -Linux -ServiceName $cloudSvcName -Name $vmname -ImageName $image -LinuxUser $linuxuser

Перезагрузка, запуск и остановка Microsoft Azure виртуальной машины

# Перезагрузка Restart-AzureVM -ServiceName $cloudSvcName -Name $vmname # Остановка Stop-AzureVM -ServiceName $cloudSvcName -Name $vmname # Старт Start-AzureVM -ServiceName $cloudSvcName -Name $vmname

Расширенные команды для создания виртуальных машин


New-AzureVMConfig позволяет создать виртуальную машину, сконфигурировав под себя. Если вас не устраивает быстрое создание VM’s или же не нравится то кол-во настроек которое эта команда предоставляет, то этот раздел именно для вас. Вы можете добавлять диск с данными, настраивать конечные точки (автоматически добавляются для SSH и RDP) и даже изменять поведение дискового кэша ОС или же диска с данными. Все что для этого потребуется – это вызвать команду New-AzureVMConfig, а затем передать их VM’s. 

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

$vmname2 = 'mytestvm2' $vmname3 = 'mytestvm3' $vm2 = New-AzureVMConfig -Name $vmname2 -InstanceSize ExtraSmall -ImageName $image | Add-AzureProvisioningConfig -Windows -Password $adminPassword | Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk1' -LUN 0 | Add-AzureEndpoint -Protocol tcp -LocalPort 80 -PublicPort 80 -Name 'web' ` -LBSetName 'lbweb' -ProbePort 80 -ProbeProtocol http -ProbePath '/' $vm3 = New-AzureVMConfig -Name $vmname3 -InstanceSize ExtraSmall -ImageName $image | Add-AzureProvisioningConfig -Windows -Password $adminPassword | Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk2' -LUN 0 | Add-AzureEndpoint -Protocol tcp -LocalPort 80 -PublicPort 80 -Name 'web' ` -LBSetName 'lbweb' -ProbePort 80 -ProbeProtocol http -ProbePath '/' New-AzureVM -ServiceName $cloudSvcName -VMs $vm2,$vm3

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

$vmname2 = 'mytestvm2' $vmname3 = 'mytestvm3' $vm2 = New-AzureVMConfig -Name $vmname2 -InstanceSize ExtraSmall -ImageName $image | Add-AzureProvisioningConfig -Linux -LinuxUser $linuxUser -Password $adminPassword | Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk1' -LUN 0 | Add-AzureEndpoint -Protocol tcp -LocalPort 80 -PublicPort 80 -Name 'web' ` -LBSetName 'lbweb' -ProbePort 80 -ProbeProtocol http -ProbePath '/' $vm3 = New-AzureVMConfig -Name $vmname3 -InstanceSize ExtraSmall -ImageName $image | Add-AzureProvisioningConfig -Linux -LinuxUser $linuxUser -Password $adminPassword | Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk2' -LUN 0 | Add-AzureEndpoint -Protocol tcp -LocalPort 80 -PublicPort 80 -Name 'web' ` -LBSetName 'lbweb' -ProbePort 80 -ProbeProtocol http -ProbePath '/' New-AzureVM -ServiceName $cloudSvcName -VMs $vm2,$vm3

Обновление существующих виртуальных машин

Изменение существующих виртуальных машин требует получения текущих настроек используя команду Get-AzureVM, после редактирования для сохранения настроек используется команда Update-AzureVM. Некоторые из изменений потребуют перезагрузки виртуальной машины, к примеру параметры дискового кэша.

$vmname = 'mytestvm1' Get-AzureVM -Name $vmname -ServiceName $cloudSvcName | Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk1' -LUN 0 | Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'translogs1' -LUN 1 | Add-AzureEndpoint -Protocol tcp -LocalPort 1433 -PublicPort 2000 -Name 'sql' | Update-AzureVM

Заключение

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

Автор статьи: Павел Иванченко.

Благодарим Павла Иванченко, Microsoft Student Partner, MSP Lead Microsoft Azure за создание статьи