"Сердце" PDT - Variable.xml (часть 1)
В продолжении предыдущего поста про Powershell Deployment Toolkit, займемся изучением Variable.xml.
Чтож, начнем с изучения коротенького Variable.xml:
<?xml version="1.0" encoding="utf-8"?>
<Installer version="2.0">
<Variable Name="SystemCenter2012ProductKey" Value="Ключ" /> – Ключ, который будет использоваться при установке компонентов System Center.
<Variable Name="SQLServer2012ProductKey" Value="Ключ" /> – Ключ, который будет использоваться при установке SQL Server 2012.
<Variable Name="SQLServer2008R2ProductKey" Value="Ключ" /> – Ключ, который будет использоваться при установке SQL Server 2008 R2.
<Variable Name="RegisteredUser" Value="Microsoft Corporation" /> – Имя пользователя, которое будет использоваться на странице регистрации продукта.
<Variable Name="RegisteredOrganization" Value="Microsoft Corporation" /> – Имя компании, которое будет использоваться на странице регистрации продукта.
<Variable Name="InstallerServiceAccount" Value="CONTOSO!Installer" /> – Аккаунт от имени которого будет происходить установка всех компонентов System Center и Windows Azure Pack.
<Variable Name="InstallerServiceAccountPassword" Value="!Q2w3e4r" /> – Пароль от аккаунта.
<Variable Name="SourcePath" Value="$SystemDriveInstaller" /> – Путь, по которому скрипт VMCreator.ps1 будет копировать, а Installer.ps1 будет искать файлы зависимостей. В ходе экспериментов удалось установить что "$SystemDrive" крайне желательно не трогать.
<Variable Name="Download" Value="C:Installer" /> – Путь, по которому VMCreator.ps1 будет искать файлы зависимостей, чтобы скопировать их на виртуальные машины.
<Variable Name="MicrosoftUpdate" Value="1" /> – Использовать ли Microsoft Update (0 или 1).
<Variable Name="CustomerExperienceImprovementProgram" Value="1" /> – Вступать ли в CEIP (0 или 1).
<Variable Name="ErrorReporting" Value="1" /> – Отправлять ли отчеты об ошибках в Microsoft (0 или 1).
На этом "глобальные переменные" заканчиваются. Кроме описаных выше есть еще 2 переменные (TempPath и OperationalDataReporting), о которых я не смог найти какого-либо описания, но на практике они не нужны. Все работает даже без последних трех переменных, а в случае если Вы не укажите первые три, все компоненты будут поставлены в ознакомительном режиме (их тоже можно удалить из Variable.xml).
<Components> – описание компонентов System Center и Windows Azure Pack, которые будут установлены.
<Component Name="System Center 2012 R2 Virtual Machine Manager"> – описание VMM.
<Variable Name="SystemCenter2012R2VirtualMachineManagerProgramFiles" Value="D:Program FilesMicrosoft System Center 2012 R2Virtual Machine Manager" /> – Путь, по которому будет установлен VMM.
<Variable Name="SystemCenter2012R2VirtualMachineManagerAdminGroup" Value="CONTOSOVMM-Admins" /> – Группа администраторов VMM.
<Variable Name="SystemCenter2012R2VirtualMachineManagerBitsTcpPort" Value="444" /> – Порт, который будет использовать VMM для операций с использованием службы BITS.
<Variable Name="SystemCenter2012R2VirtualMachineManagerServiceAccount" Value="CONTOSO!vmm" /> – Сервисный аккаунт VMM.
<Variable Name="SystemCenter2012R2VirtualMachineManagerServiceAccountPassword" Value="!Q2w3e4r" /> – Пароль от аккаунта.
</Component>
</Components>
На этом компоненты заканчиваются. Естественно их может быть (и скорее всего в ваших разворачиваниях будет) гораздо больше. Как же узнать как корректно добавить новые компоненты. Можно посмотреть вот сюда.
<Roles> – описание ролей.
<Role Name="System Center 2012 R2 Virtual Machine Manager Database Server" Server="SQL-01.contoso.com" Instance="MSSQLSERVER"></Role> – Сервер с базой данных VMM.
<Role Name="SQL Server 2012 Management Tools" Server="SQL-01.contoso.com"></Role> – Management Tools для SQL сервера.
<Role Name="System Center 2012 R2 Virtual Machine Manager Management Server" Server="VMM-01.contoso.com"></Role> – сервер управления VMM.
<Role Name="System Center 2012 R2 Virtual Machine Manager Console" Server="VMM-01.contoso.com"></Role> – Сервер на который будет установлена консоль VMM.
</Roles>
В этой части Variable.xml Вам просто нужно перечислить куда устанавливать все те компоненты что Вы указали в "зоне" компонентов
<SQL> – описание инстансов SQL, которые будут созданы при разворачивании.
<Instance Server="SQL-01.contoso.com" Instance="MSSQLSERVER" Version="SQL Server 2012"> – сервер для инстанса, версия SQL сервера и имя инстанса.
<Variable Name="SQLAdmins" Value="CONTOSOSQL-Admins" /> – группа администраторов SQL сервера.
<Variable Name="SQLInstallSQLDataDir" Value="D:Program FilesMicrosoft SQL Server" /> – каталог, куда будет произведена установка SQL сервера.
<Variable Name="SQLUserDBDir" Value="D:MSSQL11.$InstanceMSSQLData" /> – каталог, где будут расположены базы данных.
<Variable Name="SQLUserDBLogDir" Value="E:MSSQL11.$InstanceMSSQLData" /> – каталог, где будут расположены логи баз данных.
<Variable Name="SQLTempDBDir" Value="F:MSSQL11.$InstanceMSSQLData" /> – каталог, где будет расположена TempDB.
<Variable Name="SQLTempDBLogDir" Value="F:MSSQL11.$InstanceMSSQLData" /> – каталог, где будут расположены логи TempDB.
<Variable Name="SQLAgtServiceAccount" Value="CONTOSO!sql" /> – Сервисный аккаунт сервиса SQL Agent.
<Variable Name="SQLAgtServiceAccountPassword" Value="!Q2w3e4r" /> – Пароль от аккаунта.
<Variable Name="SQLServiceAccount" Value="CONTOSO!sql" /> – Сервисный аккаунт сервиса SQL Engine.
<Variable Name="SQLServiceAccountPassword" Value="!Q2w3e4r" /> – Пароль от аккаунта.
</Instance>
</SQL>
Если необходимо больше одного инстанса, нужно будет задать их создав еще 1-2-3 подобных конфигураций, начиная с <Instance Server bla-bla-bla> и до </Instance>. Таким образом, все инстансы должны находиться внутри тега <SQL>.
<VMs> – И самое интересное, описание виртуальных машин.
<Count>3</Count> – Количество машин.
<Domain> – Создаем домен. Все OU указанные ниже будут созданы (если их уже нет), как и OU указанная в разделе JoinDomain. Все пользователи и группы указанные в файле Variable.xml будут созданы в домене и "сложены" в указанные ниже OU.
<Name>contoso.com</Name> – Имя домена.
<ServiceAccountOU>Users</ServiceAccountOU> – Имя контейнера для пользователей.
<GroupOU>Groups</GroupOU> – Имя контейнера для групп.
</Domain>
<Default> – Общая для всех виртуальных машин секция.
<Host>Localhost</Host> – Hyper-V хост, на котором необходимо создать виртуальные машины.
<VMFolder>C:VMs</VMFolder> – Путь по которому будет создана папка виртуальной машины и её файлы конфигурации.
<VHDFolder>C:VMs</VHDFolder> – Путь по которому будет создана папка виртуальной машины и её жесткие диски.
<VMName> – Секция для автоматического наименования виртуальных машин, я так и не понял что она делает, ни при каких обстоятельствах у меня она не работала. Есть подозрение что она используется если не давать виртуальным машинам имена, но это крайне не удобно.
<Prefix>WS12R2D</Prefix>
<Sequence>1</Sequence>
</VMName>
<Processor>2</Processor> – Процессор.
<Memory> – Память.
<Startup>1024</Startup>
<Minimum>512</Minimum>
<Maximum>2048</Maximum>
<Buffer>20</Buffer>
</Memory>
<NetworkAdapter> – Сетевой адаптер.
<VirtualSwitch>dflt</VirtualSwitch> – Необходимо указать точное имя виртуального адаптера, который необходимо использовать при создании виртуальных машин.
<MAC>
<Prefix>00:15:5D:65:01:</Prefix>
<Sequence>4</Sequence>
</MAC>
<IP>
<Prefix>192.168.1.</Prefix> – В IP адресе и в MAC адресе используется один и тот же принцип, Вы задаете начальное значение и сдвиг. В данном случае первая виртуальная машина получит MAC 00155D540104 и IP 192.168.1.4.
<Sequence>4</Sequence>
<Mask>24</Mask>
<Gateway>192.168.1.4</Gateway>
<DNS>192.168.1.4</DNS> – Здесь указан адрес 192.168.1.4, так как это адрес первой виртуальной машины, и она будет домен контроллером.
</IP>
</NetworkAdapter>
<OSDisk> – Диск с операционной системой.
<Parent>C:Installergen2.vhdx</Parent> – Исходный диск.
<Type>Differencing</Type> – Каким образом создавать новый диск ("Copy" или "Differencing").
</OSDisk>
<DataDisks> – Диски с данными, создаются пустыми.
<Count>1</Count>
<Format>VHDX</Format>
<Size>100</Size>
</DataDisks>
<DVD>False</DVD>
<AutoStart>
<Action>Nothing</Action>
<Delay>0</Delay>
</AutoStart>
<JoinDomain> – Вводим виртуальную машину в домен.
<Domain>contoso.com</Domain>
<Credentials>
<Domain>contoso.com</Domain>
<Password>!Q2w3e4r</Password>
<Username>!jd</Username>
</Credentials>
<OrganizationalUnit>Servers.HQ</OrganizationalUnit> – OU, в которую будет введена виртуальная машина. В данном случае в корне домена будет создан контейнер HQ, а в нем контейнер Servers, куда будут добавлены все виртуальные машины.
</JoinDomain>
<AdministratorPassword>!Q2w3e4r</AdministratorPassword> – Пароль локального администратора.
<VMGeneration>2</VMGeneration> – Поколение машины.
<GuestServices>True</GuestServices> – Гостевые сервисы.
</Default>
<VM Count="1">
<VMName>DC-01</VMName>
<DataDisks> – На данных дисках будут расположены файлы AD DS.
<Count>2</Count>
<Format>VHDX</Format>
<Size>100</Size>
</DataDisks>
</VM>
<VM Count="2">
<VMName>SQL-01</VMName>
<Memory>
<Startup>1024</Startup>
<Minimum>512</Minimum>
<Maximum>8192</Maximum>
<Buffer>5</Buffer>
</Memory>
<DataDisks>
<Count>3</Count>
<Format>VHDX</Format>
<Size>100</Size>
</DataDisks>
</VM>
<VM Count="3">
<VMName>VMM-01</VMName>
<Memory> – VMM требует 2гб оперативной памяти, не забываем про это.
<Startup>2048</Startup>
<Minimum>2048</Minimum>
<Maximum>2048</Maximum>
<Buffer>20</Buffer>
</Memory>
</VMs>
</Installer>
О моих мытарствах с данным файлом я расскажу в следующей статье.
Written on June 19, 2014