Рассмотрим два сценария работы с виртуальными машинами в Windows Azure, которые помогут сэкономить деньги и время:
- Удаляем виртуальные машины (но оставляем VHD), когда они не используются – Windows Azure снимает деньги за виртуальные машины независимо от ее состояния (работает или остановлена). Проблема актуальна в случаях, если вы используете машины для тестирования или разработки (например, если вы занимаетесь разработкой на платформе SharePoint);
- Изменение сетевых настроек – если вам нужно сменить настройки облачного сервиса или сетевых настроек.
Для решения этих задач будем использовать командлеты PowerShell для Windows Azure.
Предварительные действия
Подразумеваем, что у вас уже есть аккаунт в Windows Azure.
Загрузите и установите командлеты PowerShell для Windows на
официальном сайте.
Теперь нужно получить файл с настройками для публикации и информацией о подписке, для чего запустите Windows Azure PowerShell и выполните:
Get-AzurePublishSettingsFile
В результате откроется страница
https://windows.azure.com/download/publishprofile.aspx и сохраните файл.
Далее выполните:
Import-AzurePublishSettingsFile <mysettings>. publishsettings
После чего файл с данными о подписке можно удалить.
Экспортируем и удаляем виртуальную машину
Для экспорта настроек виртуальной машины в XML файл воспользуемся командлетом
Export-AzureVM:
Export-AzureVM -ServiceName '<CloudService>' -Name '<VmName>' -Path 'c:\VMs\VMstate.xml'
И для удаления
Remove-AzureVM:
Remove-AzureVM -ServiceName '<CloudService>' -Name '<VmName>'
При этом Remove-AzureVM не удаляет VHD, и все ваши данные не теряются.
В случае, когда вам нужно начать использовать виртуальную машину, используйте экспортированный ранее файл и командлет
Import-AzureVM:
Import-AzureVM -Path 'c:\VMs\VMstate.xml' | New-AzureVM -ServiceName '<CloudService>' -Location '<Location>'
Недостаток вышеописанных действий заключается в том, что если вам нужно экспортировать и удалить несколько машин, то это будет неудобно.
Экспортируем и удаляем все виртуальные машины в Cloud Service
Get-AzureVM -ServiceName '<CloudService>' | foreach {
$path = 'c:\VMs\' + $_.Name + '.xml'
Export-AzureVM -ServiceName '<CloudService>' -Name $_.Name -Path $path
}
Remove-AzureDeployment -ServiceName '<CloudService>' -Slot Production –Force
Импортируем виртуальные машины в существующий Cloud Service
$vms = @()
Get-ChildItem 'c:\VMs\' | foreach {
$path = 'c:\VMs\' + $_
$vms += Import-AzureVM -Path $path
}
New-AzureVM -ServiceName '<CloudService>' -VMs $vms