Шаблони сервісів в 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 і зайти в папку Scripts, то вона буде порожньою.Справа в тому, що оновлення бібліотечної кулі VMM проводиться не відразу, а з інтервалом в годину (значення за замовчуванням). Ми не будемо чекати, а зробимо оновлення вручну. Для цього відкриваємо консоль VMM, заходимо в розділ «Library servers», натискаємо правою клавішею на потрібній папці і в контекстному меню вибираємо «Refresh».Після цього доданий ресурс повинен відобразитися в папці.
Можна оновити бібліотеку і за допомогою 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, так що я навів цей приклад виключно для демонстрації можливостей.
Створення шаблону ВМ
Наступний крок у створенні сервісного шаблону - це створення шаблону ВМ. Запускаємо майстер і в якості зразка вибираємо готовий шаблон з чистою встановленої 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).
.