[Перевод] Использование PowerShell для работы с Veeam Backup Free Edition

Коллега написал краткий, но содержательный пост для корпоративного блога, который сегодня и предлагается вашему вниманию (правильнее было бы назвать его «авторская русскоязычная версия, с изменениями и дополнениями»).

День добрый,
Меня зовут Владимир Ерёмин, я работаю в компании Veeam Software на позиции product manager. Одной из вверенных мне областей является PowerShell оснастка к нашему продукту Veeam Backup and Replication, и именно о работе с оной и пойдет речь далее.

6b1b1c10b0b74667bff4ed558cc2340c.png


Начнем с небольшого лирического отступления.
По ходу своей деятельности я неоднократно сталкивался с мнением, что скрипты и все, что с ними связано — это удел хардкорных бородачей, и, как говорил персонаж известного мультфильма, лучше не касаться их и десятиметровой палкой. В реальности, как это обычно водится, все выглядит несколько по-другому.
При должной сноровке знание PowerShell«a сильно облегчает жизнь — берешь задачу, выполнение которой потенциально могло занять N-ое количество часов, и, благодаря автоматизации, сводишь ее до нескольких минут. Избавляешь себя любимого от рутины, предотвращаешь фактор человеческой ошибки, вдобавок, учишься всякому новому и ранее неизведанному в процессе написания скриптов. Не стоит также забывать, что работа с тем же Nano Server«ом будет строиться исключительно через PowerShell. Поэтому, друзья, если вы не изучали PowerShell ранее, настоятельно рекомендую приступить к его изучению прямо сейчас.


Как и у каждой уважающей себя софтверной компании, у нас есть свой флагманский продукт, в нашем случае — всем известный и горячо любимый Veeam Backup & Replication. Чтобы никто не ушел обиженным, выпускается он в нескольких версиях, начиная от Free и заканчивая Enterprise Plus.
Главная особенность, которой может похвастаться бесплатная версия, — функция упрощённого бэкапа, называемая VeeamZIP.
Несмотря на всю свою простоту и удобство, была у VeeamZIP одна раздражающая деталь, которая заставляла пользователей вновь и вновь проливать скупые и не очень слёзы на наших форумах, а именно — невозможность создавать бэкапы по расписанию.
Все поменялось, когда с выпуском Veeam Backup & Replication v8 Update 2 мы отдали на откуп общественности несколько PowerShell командлетов. Используя их, пользователь был в состоянии написать простой скрипт, с помощью которого создавался бэкап одной или нескольких машин. Помимо этого, благодаря Task Scheduler, скрипту можно было выставить какое угодно расписание.
Прекрасно понимания, что для некоторых пользователей комбинация слов «простой» и «скрипт» выглядит слегка странной, я написал небольшой пример (скачать его можно тут и тут). Ниже мы разберем его немного более подробно.
Как было сказано ранее, скрипт позволяет создавать бэкапы выбранных виртуальных машин. Машины могут находиться как на обычных хостах/кластерах, так и тех, что управляются vCenter«ом (да, в качестве разбора был выбран пример для VMware).
У скрипта есть три обязательных параметра: имена виртуалок, хосты/кластеры/vCenter, на которых они восседают, и папку, в которую положатся бэкапы.
Остальные параметры носят опциональный характер.

##################################################################
# Переменные, определяемые пользователем
##################################################################
# Имена ВМ для бэкапа. При наличии нескольких имён следует использовать запятую (обязательный параметр). Например, $VMNames = "VM1”,”VM2”
$VMNames = ""
# Имя сервера vCenter или хоста, кластера, где находятся ВМ (обязательный параметр)
$HostName = ""
# Папка для бэкапов. Например, C:\Backup (обязательный параметр)
$Directory = ""

В зависимости от желаний и предпочтений можно поменять уровень компрессии, время, в течение которого должен храниться бэкап, настройки VMware Quiescence, а также параметры уведомлений:

# Уровень компрессии(опционально; возможные значения: 0 – выкл., 4 – рекомендованный для дедупликационных хранилищ, 5 - оптимальный, 6 - высокий, 9 - максимальный)
$CompressionLevel = "5"
# VMware Tools Quiescence. «Заморозить» ВМ при создании снапшота (опционально; на машине должны быть установлены VMware Tools. Возможные значения: $True/$False)
$EnableQuiescence = $True
# Время хранения (опционально; по умолчанию, файлы VeeamZIP не удаляются, а хранятся в указанной папке неограниченное время.
# Возможные значения: Never, Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "Never"

Если есть необходимость получать отчёт о проделанной работе, можно поиграться с настройками уведомлений:

##################################################################
# Настройки уведомлений
##################################################################
# Включить уведомления (опционально)
$EnableNotification = $True
# Сервер SMTP
$SMTPServer = ""
# Отправитель
$EmailFrom = ""
# Получатель
$EmailTo = ""
# Тема
$EmailSubject = ""

Отчёт выглядит следующим образом:

914ae57304c4454f90c2f683f85a6798.png

Экспериментируя со значениями переменных, можно найти ту комбинацию, которая удовлетворит именно вашему представлению о прекрасном. К примеру, если вы хотите, чтобы бэкапы были удалены через две недели, поставьте переменной $Retention значение «In2Weeks» и так далее.
Для пущего удобства я снабдил переменные в скрипте кратким описанием, поэтому острой необходимости описывать здесь каждую настройку в отдельности и ее возможные значения, на мой взгляд, нет.


Прежде чем ставить выполнение скрипта на поток, советую убедиться, что с ним в порядке, запустив его пару раз вручную.
Самый простой из известных мне способов запускать скрипты по расписанию — это Windows Task Scheduler.
Открываем его и переходим к созданию Basic Task.

cc68007521c84958b3ebc432985fcff4.png

Не забываем про то, что задания неплохо снабжать многозначительными именами и описаниями, чтобы не тратить впоследствии драгоценное время, гадая, что же это такое выполняется, а главное — с какой целью.
Следующая страница — Task Trigger.
Здесь всё просто и интуитивно понятно. Нужно решить, как часто нам хотелось бы создавать бэкапы (в английском под это дело есть умная аббревиатура — RPO, Recovery Point Objective), и отразить наши желания в виде заданных настроек.
Самый распространенный вариант — создание бэкапа раз в сутки.

88e234d645614dc3b8ebd3d8cc226091.png

Далее ставим время выполнения скрипта. Чтобы избежать излишних нагрузок на серверы в рабочее время, часто выбирают вечерние часы.

22b3bfe3dd414976af4b2a07326ce00b.png

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

f2a5ac3e2aef41ceaf016556a695933c.jpg

В соответствующее поле вводим следующую команду:
Powershell –file "Путь к файлу Veeamzip.ps1”

86519c573140488e866b5568132b9075.jpg

Ну, вот и всё! Если вдруг вспомнили, что нужно внести кое-какие изменения в только что созданную задачу, то ставим флажок «Open the Properties» перед тем, как нажать «Finish».

8b105a8372b64f04955d70fba1a5a363.jpg

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

6468ebbbf04e41aabe344a7cf1b3ec84.jpg

Т.к. мы люди мнительные, не будет лишним после создания задачи щелкнуть по ней правой кнопкой мыши и прогнать ее в тестовом режиме. («Run»)


Засим наше увлекательное путешествие в мир скриптов можно считать оконченным. Долгожданная цель (бэкапы по расписанию) достигнута, а интерес к PowerShell пробужден, по крайней мере, я искреннее надеюсь на это. Не стесняйтесь по всем возникшим вопросам обращаться к нам как здесь, так и на наших форумах (forums.veeam.com).
До новых встреч!

© Habrahabr.ru