воскресенье, 5 июня 2016 г.

Citrix Provisioning Server: Configure Automatic Virtual Disk Updates

Доброго времени суток, коллеги.
В данной статье рассмотрим автоматическое обновление vDisk'ов Citrix Provisioning Services. В качестве примера будем автоматически добавлять в образ виртуального диска актуальные базы антивируса Kaspersky и устанавливать обновления Windows.
Для того, чтобы виртуальная машина автоматически загружалась с версии образа типа "Maintenance", без дополнительного запроса в консоли, выполним изменения в реестре на каждом сервере Citrix PVS.

Добавим ключ реестра "SkipBootMenu" типа "REG_DWORD" со значением "1" в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ProvisioningServices\StreamProcess".
Перезагружаем службу «Citrix PVS Stream Service». Для этого в командной строке CMD каждого PVS-сервера выполним команды:
net stop StreamService
net start StreamService
Теперь любые типы виртуальных машин будут загружаться с соответствующих типов версий образов без дополнительного запроса "Boot Menu".
Подробнее тут.
Включим опцию автоматического обновления vDisk’ов для сайта PVS.
Для этого щелкаем правой кнопкой мыши по сайту, в нашем случае «XenAppHosts», в контекстном меню выбираем «Properties».
В появившемся окне «Site Properties» переходим по вкладку «vDisk Update», выделяем «Enable automatic vDisk update on this site». В разделе «Select the server to run vDisk updates on this site:» выбираем сервер на котором будет запускаться служба автоматического обновления образа диска, в нашем случае «ven-tst-pvs01», нажимаем «OK».
Добавим хост, в нашем случае VMWare, на сайт PVS. Для этого щелкаем правой кнопкой мыши по разделу «Hosts», в контекстном меню выбираем «Add Host».
 В окне «Virtual Host Connection Wizard», нажимаем «Next».
В окне «Hypervisor Type», выбираем «VMWare vShere/ESX», нажимаем «Next».
В окне «Name/Description» в строке «Name» вводим имя, отображаемое в консоли «Provisioning Service Console», в нашем случае «VMWareHost». Нажимаем «Next».
В окне «Hostname or IP Address» вводим имя сервера VMWare, в нашем случае «vmware». Нажимаем «Next».
В окне «Credential» вводим учетные данные для подключения к хосту, нажимаем «Verify Connection». После успешной верификации нажимаем «Next».
В окне «Confirmation» нажимаем «Finish».
Видим, что хост успешно добавлен.
Добавим виртуальный диск, который будет автоматически обновляться. Для этого переходим в раздел «vDisk Update Management». Щелкаем правой кнопкой мыши по подразделу «vDisks», в контекстном меню выбираем «Add vDisk».
В появившемся окне, щелкаем «Next».
В окне «vDisk Select» выбираем необходимый виртуальный диск, в нашем случае «TestAutoUpdatevDisk01», нажимаем «Next».
В окне «Host / VM» в строке «Select the Connection hosting the VM» выбираем добавленный ранее хост виртуализации, в нашем случае «VMWareHost».
В строке «Enter the name of the VM used to apply updates to the vDisk» вводим имя виртуальной машины, при помощи которой будет производиться обновление vDisk’а, в нашем случае «ven-tst-upd01». Нажимаем «Next».
В окне «Active Directory» выбираем подразделение (OU), где сервис PVS создаст новый объект типа компьютер с именем «ven-tst-upd01». Нажимаем «Next».
В окне «Confirmation» нажимаем «Finish».
Виртуальный диск успешно добавится.
Добавим задачу на обновление виртуального диска. Для этого переходим в раздел «vDisk Update Management». Щелкаем правой кнопкой мыши по подразделу «Tasks», в контекстном меню выбираем «Add Task».
В появившемся окне нажимаем «Next».
В окне «Name / Deskription» введем имя задачи, в нашем случае «Test_Update». Нажимаем «Next».
В окне «Schedule» задаем расписание запуска обновления виртуального диска. В нашем случае указываем «None», т.е. задачу будет запускать вручную. Нажимаем «Next».
В окне «vDisks» необходимо выбрать виртуальный диск. Для этого нажимаем «Add».
В появившемся окне выбираем «TestAutoUpdatevDisk01», нажимаем «Ok». Далее «Next».
В окне «ESD Client» оставляем значения по умолчанию, нажимаем «Next».
В окне «Scritps» нажимаем «Next».
В окне «vDisk Access» выбираем тип версии виртуального диска, который будет назначен после успешного выполнения задачи обновления VDisk’а. В нашем случае «Test». Нажимаем «Next».
В окне «Confirmaion» нажимаем «Finish».
Подготовим сам образ виртуального диска для установки обновлений Windows и актуализации антивирусных баз. Все действия необходимо производить на виртуальном диске в режиме записи.
Скачиваем по ссылке Windows Update PowerShell Module.
Разархивируем файлы из скачанного архива «PSWindowsUpdate.zip» в папку «%WINDIR%\System32\WindowsPowerShell\v1.0\Modules»
Разрешим выполнение скриптов на данном компьютере, выполнив в консоли PowerShell:
Set-ExecutionPolicy Bypass
Проверим работоспособность модуля.
Импортируем модуль в оснастку PowerShell, выполняем:
ipmo C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate -Verbose –force
Для загрузки обновлений Windows и их установки, выполним:
Get-WUInstall -Verbose –AcceptAll –IgnoreReboot
Видим, что происходит скачивание обновлений Windows.
После успешного скачивания, начнется установка.
Проверка модуля завершена.
Создадим файл «Update.ps1» с содержанием:

“C:\Program Files (x86)\Kaspersky Lab\Kaspersky Endpoint Security 10 for Windows\avp.com"  UPDATE
ipmo C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate -Verbose –force
Get-WUInstall -Verbose –AcceptAll –IgnoreReboot
Optimize-Volume -Driveletter C -Defrag -Verbose

Данный скрипт актуализирует базы данных антивируса, устанавливает обновления Windows, после чего запускает дефрагментацию диска C:\.
Поместим данный файл в директорию «C:\Temp».
Создадим файл Update.bat в директории C:\Program Files\Citrix\Provisioning Services\ с содержанием:

powershell.exe -ExecutionPolicy bypass -File C:\Temp\Update.ps1

Данный скрипт запускается при успешной загрузке виртуальной машины, в процессе выполнения задания автоматического обновления виртуального диска. Подробнее тут
Запускаем задачу «Test_Update» вручную. Для этого щелкаем правой кнопкой мыши по задаче и нажимаем «Run update now».
Задача успешно запустится.
На этом предлагаю закончить.
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!