Развёртывание консоли управления System Center 2012 Virtual Machine Manager SP1 при помощи SC 2012 CM

imageПосле обновления System Center 2012 Virtual Machine Manager (SCVMM) до уровня Service Pack 1 (SP1), встал вопрос об обновлении консолей на рабочих станциях администраторов имеющих доступ к системе. Стоит отметить, что RTM консоль SCVMM не может соединится с сервером обновлённым до уровня SP1, поэтому решить задачу обновления консолей нам нужно как можно более оперативно, и поэтому как всегда нам на помощь приходит System Center 2012 Configuration Manager (SCCM).

План действий:
1. Создание коллекции пользователей в SCCM;
2. «Разборка» дистрибутива SCVMM и подготовка скрипта установки;
3. Создание зависимых приложений;
4. Создание приложения SCCM для консоли SCVMM;
5. Мониторинг.

1. Создание коллекции пользователей в SCCM

В SCCM создадим коллекцию пользователей с динамическим членством, основанным на запросе, извлекающим информацию о членстве пользователей в группах AD:

select SMS_R_USER.ResourceID,SMS_R_USER.ResourceType,SMS_R_USER.Name,SMS_R_USER.UniqueUserName,SMS_R_USER.WindowsNTDomain 
from SMS_R_User 
where SMS_R_User.UserGroupName in ("Domain\\SCVMM-BrahchOperators1","Domain\\SCVMM-BrahchOperators2")


2. «Разборка» дистрибутива VMM и подготовка скрипта установки

При разборке дистрибутива, удалось уменьшить его размер примерно в 2 раза. Удалим в каталоге \amd64\Setup\msi подкаталоги: VmmRdServer, DHCPExtension, iSCSITargetProv, MSDeploy, Server, DACFramework, Agent, а в \i386\Setup\msi: Agent

В итоге, получим каталог размером в 697 Мегабайт:

image

Скопируем получившийся каталог в общую сетевую папку.

Создадим PowerShell-скрипт установки, который содержит в себе определение установки RTM консоли и вызывает её штатное удаление в тихом режиме, а если не находит консоль – устанавливает…

$Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft System Center Virtual Machine Manager 2012'
$UninstallAgr1 = '/client'
$UninstallAgr2 = '/x'
$InstallArg1 = '.\setup.exe'
$InstallArg2 = '/client'
$InstallArg3 = '/i'
$InstallArg4 = '/IACCEPTSCEULA'
$InstallArg5 = '/f'
$InstallArg6 = 'VMClient.ini'
IF (Test-Path $Path) {
$a = (Get-ItemProperty $Path).UninstallString
$b = $a.Replace(' /server /runui', '')
$b = $b.Replace('"', '')
Write-Host Удаляем консоль
&$b $UninstallAgr1 $UninstallAgr2
Start-Sleep -Seconds 180
Write-Host Устанавливаем консоль
& $InstallArg1 $InstallArg2 $InstallArg3 $InstallArg4 $InstallArg5 $InstallArg6
Start-Sleep -Seconds 180
}
Else
{
Write-Host Устанавливаем консоль
& $InstallArg1 $InstallArg2 $InstallArg3 $InstallArg4 $InstallArg5 $InstallArg6
Start-Sleep -Seconds 180
}

Паузы необходимы из-за того, что PoSh не дожидается успешного результата установки или удаления и закрывается, тем самым SCCM определяет успешное завершение команды и пытается найти установленное приложение и не может.

В моём примере используется файл настроек VMClient.ini, в котором можно указать другой путь для установки, изменить порт. Пример этого файла можно найти в дистрибутиве. Если его не указывать, то установка пойдёт с параметрами по умолчанию.


3. Создание зависимых приложений

Установка SCVMM Console SP1 зависит от компонентов MS Visual C++ 2010, .NET FrameWork 4.0 (или 4.5) и PowerShell 3. Если с первыми двумя всё понятно, то с PS 3.0 может возникнуть вопрос. В одно время Windows Management Framework 3.0 (WMF 3.0) устанавливался на все компьютеры с WSUS, но в связи с проблемами совместимости обновление отозвали. На данный момент обновление доступно для загрузки с центра загрузки и устанавливать его придётся самостоятельно.

Как не странно, о необходимости MS Visual C++ 2010 на странице с системными требованиями не сказано ни слова, однако, дистрибутив присутствует в каталоге Prerequisites, и выкорчевать MS Visual C++ 2010, .NET FrameWork 4.0 оттуда не представляется возможным, т.к. при запуске установщик проверяет их наличие. Если установщик не находит установленного MS Visual C++ 2010, он его сам устанавливает в бесшумном режиме, но всплывает уведомление о перезагрузке, поэтому было решено дополнительно создать приложение, чтоб подавить все “всплывашки”.

Скопируем отдельно два дистрибутива (по битности) компоненты Visual C++ 2010 в общую сетевую папку и вложим Install.cmd для его тихой установки с следующим содержимым:

IF NOT EXIST "%WINDIR%\SysWOW64" (
vcredist_x86.exe /q /norestart
) ELSE (
vcredist_x64.exe /q /norestart
)

Аналогично сделаем и Uninstall.cmd

IF NOT EXIST "%WINDIR%\SysWOW64" (
vcredist_x86.exe /q /uninstall /norestart
) ELSE (
vcredist_x64.exe /q /uninstall /norestart
)

Таким образом создаваемое приложение SCCM для Visual C++ 2010 выглядеть будет примерно так:

image

Искать установленные компоненты можно по MSI коду продукта:
{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5} для x86 
{1D8E6291-B0D5-35EC-8441-6616F567A0F7} для x64

image

 

Переходим к созданию Приложения SCCM для Windows Management Framework 3.0.

Для начала загрузим с центра загрузки 2 дистрибутива обновления для x86 и x64 и закинем их в общую сетевую папку, чтобы не лепить несколько развёртываний, сделаем ещё один командный файл для установки WMF:

IF NOT EXIST "%WINDIR%\SysWOW64" (
Windows6.1-KB2506143-x86.msu /quiet /norestart
) ELSE (
Windows6.1-KB2506143-x64.msu /quiet /norestart
)

и для удаления…

IF NOT EXIST "%WINDIR%\SysWOW64" (
Windows6.1-KB2506143-x86.msu /quiet /uninstall /norestart
) ELSE (
Windows6.1-KB2506143-x64.msu /quiet /uninstall /norestart
)

В методе обнаружения логично указать ветку реестра свидетельствующую о наличии PowerShell 3.0: HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine

image

Если Вы не знаете какая версия PS у Вас установлена, то всегда можно спросить, примерно таким запросом:

($PSVersionTable.PSVersion).Major

возможно, результат выполнения можно как-то реализовать в методах обнаружения.

После установки данного обновления необходима перезагрузка компьютера. То есть, если на компьютере не было установленного WMF3.0, консоль не установится до тех пор, пока не будет произведена перезагрузка.


4. Создание приложения SCCM для консоли SCVMM

Пришла пора создать приложение SCCM для развёртывания самой консоли VMM.

Команда для программы установки:

PowerShell –ExecutionPolicy RemoteSigned .Install.ps1

Команда для программы удаления:

setup.exe /client /x

image

Для обнаружения консоли воспользуемся доступными MSI пакетами и укажем условие: Консоль установлена, если версия пакета больше или равна 3.1.6011.0.

image

В конечном итоге, в мастере это будет выглядеть так:

image

Реализовать таким образом обнаружение пришлось из-за двух нюансов:
1) Коды MSI пакета RTM консоли и консоли с SP1 равны.
2)
После установки уже доступного Rollup1 для SC 2012 SP1 версия изменится до 3.1.6018.0 (есть на WSUS)

На шаге зависимости, добавляем наши заранее созданные приложения:

image

Готово. Осталось распространить приложение по точкам распространения и развернуть на коллекцию пользователей.

5. Мониторинг

Как уже говорилось ранее, после установки WMF3.0 нужна обязательная перезагрузка системы, о чём нам и трубит мониторинг.

image

После перезагрузки SCCM, убедившись в том, что зависимости соблюдены, выполнит установку консоли SCVMM 

Добавить комментарий