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

в 13:25, , рубрики: powershell, windows azure, для новичков, метки: , ,
Введение

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

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

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

 Import-AzurePublishSettingsFile 'c:tempmysub.publishsettings'

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

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

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

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

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

Get-AzureStorageAccount  

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

New-AzureStorageAccount -StorageAccountName 'myuniquelynamedstorage' -Location 'East US'
Подготовка к созданию виртуальной машины из PowerShell

image
Перед тем как приступить к созданию VM’s в Windows 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 
Перезагрузка, запуск и остановка Windows 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.

Автор: Jimmy_J

Поделиться

* - обязательные к заполнению поля