Заметки о Windows и других программных продуктах Microsoft...

Шаблоны сервисов в System Center 2012 R2 Virtual Machine Manager

Шаблоны сервисов в System Center 2012 R2 Virtual Machine Manager

Понятие сервиса является ключевым моментов в System Center 2012 R2 Virtual Machine Manager. Стоит уточнить, что под сервисом в System Center подразумевается не отдельная служба или приложение, а определенная инфраструктура, состоящая из одной или нескольких виртуальных машин, на которых исполняются различные службы и приложения, которые и предоставляют конечному пользователю определенную услугу (сервис).

Сервисы в VMM могут быть как одно- так и многоуровневыми. В качестве примера можно привести Exchange Server, каждая роль которого является отдельным уровнем (tier) и может быть размещена на отдельной ВМ, а все вместе они представляют из себя сервис.

Для автоматизации развертывания сервисов в VMM используются шаблоны сервисов (Service Template). Шаблон сервиса представляет из себя набор из одного или нескольких шаблонов виртуальных машин и различных профилей (оборудования, гостевой ОС и пр.).

И сегодня мы рассмотрим создание и развертывание сервиса из шаблона на примере служб Active Directory и DNS. Проще говоря создадим шаблон контроллера домена и развернем его. Для этого нам потребуется шаблон ВМ с установленной Windows Server 2012 R2, профиль оборудования, профиль гостевой ОС и профиль приложения.

Начнем с профиля приложения.

Создание профиля приложения

Настройку ролей будем производить с помощью PowerShell. Для этого создаем PowerShell скрипт вот такого содержания:

Import-Module ADDSDeployment

$pass = $args[0]
$domain = $args[1]

$user = «$domain\administrator»
$password = ConvertTo-SecureString $pass -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password

$result = Install-ADDSDomainController `
-CreateDnsDelegation:$false `
-DatabasePath ‘%windir%\NTDS’ `
-SysvolPath ‘%windir%\SYSVOL’ `
-LogPath ‘%windir%\NTDS’ `
-DomainName $domain `
-Credential $cred `
-InstallDns:$true `
-NoGlobalCatalog:$false `
-SiteName ‘Default-First-Site-Name’ `
-SafeModeAdministratorPassword $password `
-NoRebootOnCompletion:$false `
-Force:$true

Этот скрипт производит настройку контроллера домена и DNS-сервера. Обратите внимание, что имя домена и пароль администратора передаются в скрипт в качестве аргументов.

Все ресурсы, которые используются при развертывании сервисов в VMM, должны находиться в библиотеке. Поэтому сохраняем скрипт в файл с именем newDC.ps1. Затем создаем папку NewDC.cr и помещаем в нее скрипт. Переносим папку NewDC.cr на библиотечную шару, в заранее созданную директорию Scripts.

Примечание. Расширение .cr в имени папки обозначает тип custom resource, или произвольный ресурс.

библиотечная шара VMM

 

Если теперь открыть консоль VMM и зайти в папку Scripts, то она будет пустой. Дело в том, что обновление библиотечной шары VMM производится не сразу, а с интервалом в час (значение по умолчанию). Мы не будем ждать, а произведем обновление вручную. Для этого открываем консоль VMM, заходим в раздел «Library servers», кликаем правой клавишей на нужной папке и в контекстном меню выбираем «Refresh». После этого добавленный ресурс должен отобразиться в папке.

обновление библиотеки VMM

 

Можно обновить библиотеку и с помощью PowerShell. Например вот такой командой мы обновим все библиотечные шары на сервере SC1.contoso.com:

Get-SClibraryShare -VMMServer SC1.contoso.com | Read-SCLibraryShare

Теперь приступим непосредственно к созданию профиля приложения. Переходим в раздел «Profiles» и жмем Create -> Application Profile.

запуск создания профиля приложения

 

На вкладке «General» вводим имя и описание профиля, а также выбираем режим совместимости (Compatibility). Этот выбор зависит от того, что за приложение вы планируете развертывать. Если вы планируете развертывать исключительно веб-приложение под IIS, то выбирайте Web Application Host, если SQL Server — то SQL Server Application Host. В любом другом случае лучше оставить дефолтное значение General, которое позволяет разворачивать приложения любого типа, а также их комбинации.

имя и тип профиля приложения

 

Переходим на вкладку «Application Configuration» и отмечаем операционные системы, с которыми будет совместимо ваше приложение. Это не обязательно, но может помочь избежать ошибок при развертывании сервиса.

выбор ОС, совместимых с приложением

 

Затем жмем кнопку Add и выбираем технологию развертывания. В Virtual Machine Manager 2012 R2 поддерживается четыре типа инсталляционных пакетов:

1) Web application — развертывание веб-приложений под IIS с использованием технологии Web Deploy;
2) Virtual application — развертывание приложений с использованием технологии виртуализации приложений Microsoft Server Application Virtualisation (App-V);
3) Microsoft SQL Server Data-tier Application — развертывание SQL Server из пакета приложений уровня данных (Data-tier Applications, DAC);
4) Script application — развертывание приложений с помощью CMD\PowerShell и прочих скриптов.

Поскольку у нас развертывание будет производиться скриптом PowerShell, то выбираем Script Application.

выбор способа развертывания приложения

 

В качестве типа запуска выбираем вариант «Specify an executable and parameters». В строке «Executable program» указываем путь к оболочке PowerShell (файл powershell.exe), а в строке «Parameters» — путь к скрипту и передаваемые внутрь скрипта аргументы. По сути у нас получается что то вроде:

powershell.exe -file .\newDC.ps1 @password@ @domain@

Примечание. Обратите внимание на конструкцию вида @password@. В VMM это обозначает необходимость ручного ввода значения параметра, находящегося между символами @@. Таким образом мы сможем вручную ввести необходимые значения в процессе развертывания сервиса.

В поле «Script resource package» жмем на кнопку Browse и выбираем ресурс NewDC.cr, в котором находится наш скрипт. Также выбираем RunAs аккаунт, от имени которого будет запущен скрипт. И укажем таймаут, в течении которого скрипт должен гарантированно отработать. Если таймаут выбрать неправильно, то VMM может не дождаться завершения работы скрипта и создание сервиса вылетит с ошибкой.

команда и аргументы для запуска скрипта

 

Также в разделе Scripts можно указать дополнительные скрипты (или команды), которые должны быть запущены перед (Pre-Install) или после (Post-Install) основной процедуры развертывания. Для добавления скрипта надо нажать Add и выбрать «Script to Application Profile». Таких дополнительных скриптов может быть несколько и для них можно даже указать порядок запуска.

Принцип здесь такой же — указываем исполняемый файл и дополнительные параметры. Для примера я добавлю команду PowerShell, которая перед запуском основного скрипта установит политику выполнения (Execution Policy) в значение RemoteSigned.

Примечание. Если что, политика выполнения скриптов PowerShell в Windows Server 2012 R2 по умолчанию уже RemoteSigned, так что я привел этот пример исключительно для демонстрации возможностей.

дополнительный pre-install скрипт

Создание шаблона ВМ

Следующий шаг в создании сервисного шаблона — это создание шаблона ВМ. Запускаем мастер и в качестве образца выбираем готовый шаблон с чистой установленной Windows Server 2012 R2. Обратите внимание, что выбранный шаблон обязательно должен быть первого поколения, так как System Center 2012 R2 Virtual Machine Manager не позволяет использовать виртуальные машины второго поколения для создания шаблона сервиса.

выбор источника для создания шаблона ВМ

 

Добавляем имя и описание шаблона.

имя и описание шаблона ВМ

 

Выбираем заранее подготовленный профиль оборудования.

выбор аппаратного профиля

 

И профиль гостевой ОС, в котором в секции «Roles and Features» отмечены все необходимые для домен-контроллера роли и компоненты.

Примечание. Все настройки гостевой ОС (ключ продукта, пароль локального админа и т.п.) необходимо тщательно проверить. К примеру, если указанный пароль не будет соответствовать парольной политике Windows, то на этапе настройки ОС процесс развертывания сервиса загнется с неизвестной ошибкой.

выбор профиля гостевой ОС

 

Также выбираем созданный ранее профиль приложения NewDC.

выбор профиля приложения

 

И жмем кнопку «Create», создавая новый шаблон ВМ.

запуск создания шаблона ВМ

Создание шаблона сервиса

Следующий шаг — это создание шаблона сервиса. Для этого  переходим в раздел Templates -> Service Templates и жмем Create Service Template.

создание шаблона сервиса

 

Открывается окно Template Service Designer. Выбираем образец (pattern) для нашего сервиса и вводим имя шаблона. Кроме того, сервисные шаблоны поддерживают версионность, так что в поле Release можно указать номер версии сервиса.

Примечание. Версии указываются в цифровом формате, в порядке возрастания (1.0, 1.1 и т.д.). На основе этой информации и происходит отслеживание версионности.

выбор паттерна для шаблона сервиса

 

Поскольку у нас сервис будет развернут на одной ВМ, то выбираем стандартный паттерн Single Machine. В левой части отображаются все доступные нам шаблоны ВМ. Выбираем только что созданный шаблон DC и перетаскиваем его мышкой вправо.

выбор шаблона ВМ для создания шаблона сервиса

 

Проверяем, все ли правильно в шаблоне и жмем на кнопку «Save and Validate», сохраняя шаблон. При необходимости можно дважды кликнуть на любой его части и посмотреть\отредактировать необходимые параметры (сетевые настройки, параметры оборудования и пр.).

валидация и сохранение шаблона сервиса

Развертывание сервиса из шаблона

Ну и собственно то, ради чего все и затевалось — развертывание сервиса из шаблона. Напомню, что для успешного развертывания сервиса необходимо, чтобы ВМ смогли получить сетевые настройки и подключиться к необходимым сетевым ресурсам. Для этого нужно либо иметь в сети DHCP-сервер, либо настроить в VMM статические пулы IP-адресов.

Созданный шаблон можно найти в библиотеке, в разделе Service Templates. Для развертывания сервиса кликаем по нему правой клавишей и выбираем пункт Configure Deployment.

запуск развертывания шаблона сервиса

 

Вводим имя новой конфигурации развертывания сервиса, под которым она будет сохранена в библиотеке. Все сохраненные конфигурации можно найти в разделе Templates — Service Deployment Configurations.

имя конфигурации развертывания сервиса

 

В открывшемся окне идем в раздел Settings и указываем те самые параметры, указанные между символами @@ — имя домена (domain) и пароль (password). Эти значения и будут переданы в скрипт в качестве аргументов. Обновляем экран кнопкой «Refresh Prewiew», и если все в порядке (на картинке нет красного) то жмем «Deploy Service», запуская развертывание сервиса.

ввод дополнительных параметров и запуск развертывания сервиса

 

Понаблюдать за процессом развертывания можно в окне «Jobs», где отображается ход выполнения операций. Если все сделано правильно, то через некоторое время мы получим сообщение об успешном развертывании сервиса, в противном случае будет выдана детальная ошибка с описанием проблемы и рекомендуемым действием.

процесс развертывания сервиса

 

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

И еще, на TechNet есть STEK (Service Template Example Kit) — набор готовых шаблонов для наиболее распространенных приложений (AD, Exchange, Lync, SQL Server).

 
 
Комментарии

Пока нет комментариев.