26 сент. 2011 г.

Автоматизация управления Snapshot'ами в VMWare vServer, vCenter

Если у вас много виртуальных машин на vServer'e, то создание новых снапшотов и удаление устаревших может стать очень рутинным занятием. Есть тулза, которая ставится вместе с сервером - VMware vCenter Orchestrator. Но её очень напряжно настраивать - для неё нужно настроить MSSQL Server, LDAP/AD и еще много чего) я запнулся на LDAP, т. к. структуры АД не было в той сети, в которой был сервер, а ADAM как-то странно себя вел на том сервере. И я нашел альтернативу :)  - примочку к Power Shell. Работало у меня всё под Windows Server 2003, а там нет по умолчанию павер шелла - выкачиваем его отсюда: http://support.microsoft.com/kb/968930/en-us

Затем качаем саму примочку - Power CLI: http://communities.vmware.com/community/vmtn/server/vsphere/automationtools/powercli


По умолчанию в Windows 2003 не разрешено выполнять скрипты PowerShell в соответствии с политиками выполнения сценариев (Execution Policy). Чтобы разрешить это, запустим консоль PowerShell и напечатаем:

Set-ExecutionPolicy RemoteSigned

Теперь можем пользоваться новой примочкой, запустив ее из меню Пуск/Программы.

Ознакомиться с тем, какие команды она воспринимает, можно из гугла, нас сейчас интересует написание скриптов, которые будут автоматом создавать и удалять снапшоты. Для этого создаем 2 текстовых файла, редактируем и переименовываем потом.

1й - addsnapshots.ps1 :


Connect-VIServer ИмяСервера
get-vm | new-snapshot -name "AutoSnapshot"



2й - removesnapshots.ps1 :

Connect-VIServer ИмяСервера
get-vm | get-snapshot | 
Where { $_.Created -lt (Get-Date).AddDays(-7)| remove-snapshot -confirm:$false


Вместо ИмяСервера ставим ИП или имя хоста сервера с нашим vServer, ясное дело. Также можно указать логин и пароль, типа как тут:

Connect-VIServer -Server 192.168.1.3 -Protocol https -User administrator -Password xxx

У меня же всё работало на локальной машине, потому прокатило просто localhost

Далее создаем 2 батника, которые будут вызывать павер шелл, в него пихать powerCLI, а в powerCLI уже наш скрипт - о как :)

1й - addsnapshots.bat :


%SystemRoot%\system32\windowspowershell\v1.0\powershell.exe -psc "C:\Program Files\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -command "c:\scripts\addsnapshots.ps1"


2й - removesnapshots.bat :

%SystemRoot%\system32\windowspowershell\v1.0\powershell.exe -psc "C:\Program Files\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -command "c:\scripts\removesnapshots.ps1"

Только проверьте пути! У вас они могут отличаться - к павер шеллу, к примочке и к скрипту.

Теперь добавляем батники в планировщик (например, добавление снапшотов - раз в день, а удаление - раз в неделю).

Всё :)