AutomatedLab. Часть 3 - Работа с предопределенными ролями сервера

imageЭтот третья часть из серии записей об инструменте автоматизации развертывания лабораторий для тестирования AutomatedLab. В этой статье мы научимся предопределять роли сервера и сменим операционную систему на Windows 10 Technical Preview.

Установка

Если у Вас установлена версия AutomatedLab более ранняя нежели 2.5, пожалуйста, удалите ее и установите последнюю версию. Вы можете найти то что Вам нужно на Microsoft TechNet: AutomatedLab.

Процесс установки AutomatedLab объясняется в AutomatedLab. Часть 2 — Развертывание простой лаборатории.

Необходимые условия для расширения лаборатории

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

Добавление операционных систем и продуктов требует, чтобы соответствующие образы ISO были доступны на хосте Hyper-V. Чтобы получить список доступных операционных систем, используйте командлет Get-LabAvailableOperatingSystem. При указании папки LabSources, данный командлет будет монтировать каждый образ ISO и возвращать список доступных операционных систем.

AL3-1

Примечание Вывод показывает что название операционной системы, которую мы собираемся использовать далее это "Windows Server vNext SERVERDATACENTER".

Следующие образы ISO должны быть загружены в папку \LabSources\ISOs:

  • Windows Server Technical Preview (x64) - DVD (English)
  • Exchange Server 2013 with Service Pack 1 (x64)
  • SQL Server 2012 R2

Удаляем предыдущую лабораторию

Если лаборатория, которую мы создали в предыдущей статье, существует на хосте Hyper-V, то ее нужно удалить. Это нужно потому, что контроллер домена должен быть развернут на базе Windows 10 и лес Active Directory должен быть пересоздан.

Для удаления существующей лаборатории откройте Powershell в режиме повышенных привилегий и выполните следующую команду:

Remove-Lab -Path <LabPath>\Lab.xml

Внимание! Эта команда удалит все виртуальные машины лаборатории, VHD диски и виртуальные коммутаторы. Отменить данные действия будет невозможно.

Командлет Remove-Lab также полезен, если необходимо выполнить тесты несколько раз и при этом вы не хотите использовать контрольные точки. Создание лаборатории снова и снова требует запуска скрипта сборки. Удаление вручную большой лаборатории с множеством виртуальных машин, довольно скучное занятие и может привести к некоторым ошибкам (например, вы забудете удалить какую-либо виртуальную машину или виртуальный жесткий диск). Чем больше вы будете использовать AutomatedLab, тем быстрее привыкните к удалению всей лаборатории, так как восстановление занимает не так уж много времени.

Настройка новой лаборатории

Настраивая новую лабораторию, первым делом мы добавим в нее необходимые образы ISO. AutomatedLab должна знать об образе Windows Server Technical Preview. Командлет Add-LabIsoImageDefinition добавляет определение образа в лабораторию. Важно пометить образ как IsOperatingSystem. Имя образа не важно, но должно быть уникальным.

Add-LabIsoImageDefinition -Name Win10 -Path $labSources\ISOs\en_windows_server_technical_preview_x64_dvd_5554304.iso –IsOperatingSystem

Следующие необходимы образы, это Exchange Server 2013 и SQL Server 2012:

Add-LabIsoImageDefinition -Name Exchange2013 -Path $labSources\ISOs\mu_exchange_server_2013_with_sp1_x64_dvd_4059293.iso

Add-LabIsoImageDefinition -Name SQLServer2012 -Path $labSources\ISOs\en_sql_server_2012_standard_edition_with_sp1_x64_dvd_1228198.iso

Смена операционной системы

Лаборатория, которую мы создавали в Части 2 содержала две виртуальные машины: S1DC1 и S1Server1. Нам нужно изменить операционную систему у этих двух машин в существующей конфигурации лаборатории. Это можно легко сделать путем поиска и замены строки 'Windows Server 2012 R2 SERVERDATACENTER' на 'Windows Server vNext SERVERDATACENTER'.

Определение контроллера домена будет выгядеть так:

$role = Get-LabMachineRoleDefinition -Role RootDC -Properties @{ DomainFunctionalLevel = 'Win2012R2'; ForestFunctionalLevel = 'Win2012R2' }

Add-LabMachineDefinition -Name S1DC1 `
-MemoryInMb 512 `
-Network $labName `
-IpAddress 192.168.81.10 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-Roles $role `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

Роль Exchange Server

Легкий путь для конфигурирования виртуальной машины в AutomatedLab это использование ролей. Однако, назначение роли виртуальной машине не является обязательным. Вы можете настроить ее вручную. Получить список доступных ролей в AutomatedLab вы можете в Часть 2 - Развертывание простой лаборатории.

Для добавления сервера с Exchange Server в текущую конфигурацию лаборатории, нам нужно выбрать соответствующую роль. Используйте командлет Get-LabMachineRoleDefinition для предоставления роли и дополнительной информации в виде хэш-таблицы.

Базовое развертывание Exchange Server требует следующей дополнительной информации:

  • OrganizationName

Имя назначеное новой организации Exchange Server

  • DependencySourceFolder

Exchange Server 2013 имеет предварительные условия, которые должны быть развернуты перед установкой. AutomatedLab должен знать где искать нужные файлы.

Если вы забыли указать эти значения, валидатор AutomatedLab создаст соответствующие ошибки и развертывание не начнется.

Укажем в качестве значений имя  организации 'TestOrg' и папку SoftwarePackages в LabSources, используя следующую команду:

$role = Get-LabMachineRoleDefinition -Role Exchange -Properties @{ OrganizationName = 'TestOrg'; DependencySourceFolder = "$labSources\SoftwarePackages" }

Определение Exchange Server

Роль Exchange Server сохранена в переменной $role и следующая задача это определение новой виртуальной машины которая должна будет нести роль Exchange Server. Проще всего скопировать определение одного из серверов и вставить под определением S1Server1.

Помните о том, что новой машине нужно дать новое имя и IP адрес. Так же рекомендуется назначить этому серверу больше RAM. Ну и наконец ранее созданную роль нужно назначить этой машине. Сейчас мы получим полное определение сервера для Exchange Server 2013 запущенного на Windows Server 10 Technical Preview:

Add-LabMachineDefinition -Name S1Ex1 `
-MemoryInMb 4096 `
-Network $labName `
-IpAddress 192.168.81.21 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-Role $role `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

Роль SQL Server 2012 и определение сервера

AutomatedLab делает стандартное развертывание SQL Server 2012, но еще не поддерживает ее кастомизацию. Таким образом определение роли SQL Server 2012 еще проще, так как оно не имеет дополнительных параметров. Определение машины с SQL Server так же можно скопировать и вставить с другой машины (не забыв изменить имя роли, машины и IP адрес):

$role = Get-LabMachineRoleDefinition -Role SQLServer2012

Add-LabMachineDefinition -Name S1Sql1 `
-MemoryInMb 4096 `
-Network $labName `
-IpAddress 192.168.81.22 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-Role $role `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

Примечание Посмотрите предустановленные PostInstallActivity для SQL Server. Оно устанавливает эталонные базы Northwind и Pubs.

Экспорт определения лаборатории

После конфигурирования всех определений лаборатории, мы можем экспортировать конфигурацию используя командлет Export-LabDefinition. Этот командлет создаст два XML файла в папке D:\FirstLab. Эти файлы содержат конфигурацию лаборатории, что делает ее постоянной.

Export-LabDefinition -Force

AL3-2

Примечание Переключатель Force позволит перезаписать существующие файлы без дополнительного разрешения.

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

Все определения лаборатории завершены. Развертывание лаборатории запускается по вызову командлета Install-Lab. Но сначала нужно импортировать лабораторию, которая перед этим была экспортирована в XML.

Когда описание лаборатории импортируется, запускаются валидаторы, которые проверяют целостность конфигурации и возможность ее развертывания. Следующие строки делают эту тяжелую работу:

Import-Lab -Path (Get-LabDefinition).LabFilePath

Install-Lab -NetworkSwitches -BaseImages -VMs

#Тут разворачивается домен и контроллер домена
Install-Lab -Domains

#Начинается установка SQL Server 2012
Install-Lab –SQLServer2012

#Развертывание Exchange 2013
Install-Lab -Exchange2013

#Запуск всех машин которые еще не запущены
Install-Lab -StartRemainingMachines

Примечание Для более подробного описания процесса развертывания обратитесь к предыдущим статьям серии.

Создание контрольной точки

AutomatedLab предоставляет простое решение для управления контрольными точками множества виртуальных машин. Отпадает нужда в управлении контрольными точками через GUI Hyper-V Manager или в создании цикла в Powershell.

Командлет Checkpoint-LabVM может сделать контрольную точку как для одной машины, так и для нескольких. Вы также можете создать контрольную точку для всей лаборатории, используя переключатель All. Для примера:

Checkpoint-LabVM -All -SnapshotName 'InstallationDone'

Для восстановления с контрольной точки просто введите следующую команду:

Restore-LabVMSnapshot -All -SnapshotName 'InstallationDone'

Примечание Когда вы вызываете Checkpoint-LabVM все виртуальные машины в лаборатории ставятся на паузу перед созданием контрольной точки. Это позволяет создать контрольные точки для всех машин, субъективно, в одно время, что может быть важным для репликации Active Directory, к примеру. Тем не менее разрыв во времени может достигать одной-двух секунд, поэтому эта функция может не подходить для всех продуктов или сценариев.

Удаление лаборатории

Удаление небольшой лаборатории, описанной в этой статье делается довольно легко. Однако, если необходимо удалить лабораторию на 10+ машин, задача может стать утомительной. AutomatedLab содержит командлеты которые позволят вам очистить хост от всех машин в используемой лаборатории.

Командлет Remove-Lab сначала удаляет все виртуальные машины, потом диски и, наконец, виртуальные коммутатор. Это позволяет последовательно развернуть лабораторию, провести тесты, удалить лабораторию, снова развернуть и провести тесты и так далее.

Конечно же контрольные точки, позволяющие откатиться, так же доступны. Одна из более поздних статей в этой серии расскажет подробно как можно воспользоваться данным функционалом.

Полный текст скрипта

$start = Get-Date

$labSources = 'E:\LabSources'

$vmDrive = 'D:'

$labName = 'FirstLab'

$labPath = Join-Path -Path $vmDrive -ChildPath $labName

if (-not (Test-Path $labPath)) { New-Item $labPath -ItemType Directory | Out-Null }

New-LabDefinition -Path $labPath -VmPath $labPath -Name $labName -ReferenceDiskSizeInGB 60

Add-LabVirtualNetworkDefinition -Name $labName -IpAddress 192.168.81.1 -PrefixLength 24

Add-LabDomainDefinition -Name test1.net -AdminUser administrator -AdminPassword Password1

Add-LabIsoImageDefinition -Name Win10 -Path $labSources\ISOs\en_windows_server_technical_preview_x64_dvd_5554304.iso –IsOperatingSystem

Add-LabIsoImageDefinition -Name Exchange2013 -Path $labSources\ISOs\mu_exchange_server_2013_with_sp1_x64_dvd_4059293.iso

Add-LabIsoImageDefinition -Name SQLServer2012 -Path $labSources\ISOs\en_sql_server_2012_standard_edition_with_sp1_x64_dvd_1228198.iso

$installationCredential = New-Object PSCredential('Administrator', ('Password1' | ConvertTo-SecureString -AsPlainText -Force))

$role = Get-LabMachineRoleDefinition -Role RootDC -Properties @{ DomainFunctionalLevel = 'Win2012R2'; ForestFunctionalLevel = 'Win2012R2' }

Add-LabMachineDefinition -Name S1DC1 `
-MemoryInMb 512 `
-Network $labName `
-IpAddress 192.168.81.10 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-Roles $role `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

Add-LabMachineDefinition -Name S1Server1 `
-MemoryInMb 512 `
-Network $labName `
-IpAddress 192.168.81.20 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

$role = Get-LabMachineRoleDefinition -Role Exchange -Properties @{ OrganizationName = 'TestOrg'; DependencySourceFolder = "$labSources\SoftwarePackages" }

Add-LabMachineDefinition -Name S1Ex1 `
-MemoryInMb 4096 `
-Network $labName `
-IpAddress 192.168.81.21 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-Role $role `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

$role = Get-LabMachineRoleDefinition -Role SQLServer2012

Add-LabMachineDefinition -Name S1Sql1 `
-MemoryInMb 4096 `
-Network $labName `
-IpAddress 192.168.81.22 `
-DnsServer1 192.168.81.10 `
-DomainName test1.net `
-IsDomainJoined `
-Role $role `
-InstallationUserCredential $installationCredential `
-ToolsPath $labSources\Tools `
-OperatingSystem 'Windows Server vNext SERVERDATACENTER'

Export-LabDefinition -ExportDefaultUnattendedXml –Force

Import-Lab -Path (Get-LabDefinition).LabFilePath

Install-Lab -NetworkSwitches -BaseImages -VMs

Install-Lab -Domains

Install-Lab –SQLServer2012

Install-Lab -Exchange2013

Install-Lab –StartRemainingMachines

$end = Get-Date

Write-Host "Setting up the lab took $($end - $start)"

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