Коллега написал краткий, но содержательный пост для корпоративного блога, который сегодня и предлагается вашему вниманию (правильнее было бы назвать его «авторская русскоязычная версия, с изменениями и дополнениями»).
День добрый,
Меня зовут Владимир Ерёмин, я работаю в компании Veeam Software на позиции product manager. Одной из вверенных мне областей является PowerShell оснастка к нашему продукту Veeam Backup and Replication, и именно о работе с оной и пойдет речь далее.
Начнем с небольшого лирического отступления.
По ходу своей деятельности я неоднократно сталкивался с мнением, что скрипты и все, что с ними связано — это удел хардкорных бородачей, и, как говорил персонаж известного мультфильма, лучше не касаться их и десятиметровой палкой. В реальности, как это обычно водится, все выглядит несколько по-другому.
При должной сноровке знание 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 = ""
Отчёт выглядит следующим образом:
Экспериментируя со значениями переменных, можно найти ту комбинацию, которая удовлетворит именно вашему представлению о прекрасном. К примеру, если вы хотите, чтобы бэкапы были удалены через две недели, поставьте переменной $Retention значение “In2Weeks” и так далее.
Для пущего удобства я снабдил переменные в скрипте кратким описанием, поэтому острой необходимости описывать здесь каждую настройку в отдельности и ее возможные значения, на мой взгляд, нет.
Расписание. Надежное, как швейцарские часы
Прежде чем ставить выполнение скрипта на поток, советую убедиться, что с ним в порядке, запустив его пару раз вручную.
Самый простой из известных мне способов запускать скрипты по расписанию – это Windows Task Scheduler.
Открываем его и переходим к созданию Basic Task.
Не забываем про то, что задания неплохо снабжать многозначительными именами и описаниями, чтобы не тратить впоследствии драгоценное время, гадая, что же это такое выполняется, а главное – с какой целью.
Следующая страница – Task Trigger.
Здесь всё просто и интуитивно понятно. Нужно решить, как часто нам хотелось бы создавать бэкапы (в английском под это дело есть умная аббревиатура – RPO, Recovery Point Objective), и отразить наши желания в виде заданных настроек.
Самый распространенный вариант – создание бэкапа раз в сутки.
Далее ставим время выполнения скрипта. Чтобы избежать излишних нагрузок на серверы в рабочее время, часто выбирают вечерние часы.
На следующей странице указываем запуск программы в качестве необходимого действия и следуем дальше.
В соответствующее поле вводим следующую команду:
Powershell –file “Путь к файлу Veeamzip.ps1”
Ну, вот и всё! Если вдруг вспомнили, что нужно внести кое-какие изменения в только что созданную задачу, то ставим флажок “Open the Properties” перед тем, как нажать “Finish”.
Есть серьезное подозрение, что в подавляющем большинстве случаев скрипт будет выполняться на сервере в то время, когда ответственный пользователь и не залогинен вовсе. В связи с чем рекомендуется указать логин и пароль, что позволит скрипту совершать свое черное дело без пользовательского логина в системе.
Т.к. мы люди мнительные, не будет лишним после создания задачи щелкнуть по ней правой кнопкой мыши и прогнать ее в тестовом режиме. (“Run”)
Вместо послесловия
Засим наше увлекательное путешествие в мир скриптов можно считать оконченным. Долгожданная цель (бэкапы по расписанию) достигнута, а интерес к PowerShell пробужден, по крайней мере, я искреннее надеюсь на это. Не стесняйтесь по всем возникшим вопросам обращаться к нам как здесь, так и на наших форумах (forums.veeam.com).
До новых встреч!
Полезные ссылки
- Бесплатное решение Veeam Backup FREE Edition (ссылка для скачивания): https://www.veeam.com/virtual-machine-backup-solution-free-download.html
- PowerShell 4.0 для новичков (статья на англ. языке): https://www.veeam.com/wp-powershell-newbies-start-powershell.html
- Руководство по работе с оснасткой PowerShell для Veeam Backup & Replication (на англ.языке): https://helpcenter.veeam.com/backup/powershell/veeam_psreference.html
Автор: Veeam Software