Введение
Еще в июне 2012 был обновлен Windows Azure PowerShell командлеты и к нему добавились некоторые интересные функциональные возможности для управления виртуальными машинами Windows Azure. В этой статье я расскажу о некоторых из новых функций по автоматизации Windows Azure IaaS.
Конфигурирование Windows Azure PowerShell
Первое, что необходимо сделать – установить Windows 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\Windows Azure Powershell
Это означает, что не нужно запускать Set-AzureSubscription для каждого из сценариев, так как он уже есть. Windows Azure PowerShell поддерживают несколько подписок, поэтому здесь можно выбрать с какой подпиской работать, командой — Select-AzureSubscription.
Настройка хранилища
![image](http://img13.imageshost.ru/img/2012/10/28/image_508d30e701287.png)
Также, новым дополнением является –CurrentStorageAccount. Этот параметр позволяет указать какое хранилище использовать для ваших VM’s в работе из PowerShell. Чтобы установить хранилище необходимо выполнить следующую команду:
Get-AzureStorageAccount
Если необходимо создать StorageAccount, воспользуйтесь следующей командой:
New-AzureStorageAccount -StorageAccountName 'myuniquelynamedstorage' -Location 'East US'
Подготовка к созданию виртуальной машины из PowerShell
![image](http://img13.imageshost.ru/img/2012/10/28/image_508d314f28784.png)
Перед тем как приступить к созданию 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.