Powershell Deployment Toolkit - автоматизация разворачиваний

Недавно я наткнулся на Powershell Deployment Toolkit (далее PDT). Новая утилита от сообщества для автоматизации разворачиваний. Порядка 40000 строк кода на Powershell, чудесные XML файлы по 500-600 строк, ну не мечта ли это? Для затравки, за сколько Вы можете развернуть новый домен, VMM, Orchestrator, Service Provider Foundation, Service Management Automation, Windows Azure Pack и связать все это? PDT может за полтора часа на моем ноутбуке.

Что он может:

  1. Разворачивать все компоненты System Center 2012 SP1 и 2012 R2 (включая SQL);

  2. Производить большинство Post Install задач, таких как создание коннекторов в scsm, регистрация endpoint’ов SPF и SMA в WAP’е и многое-многое другое;

  3. Создавать новый домен и виртуальные машины (только hyper-v), вводить их в домен, создавать OU и учетные записи в новом домене;

  4. Создавать кластеры и NLB для ролей System Center.

Чтож, как это работает?

PDT состоит из трех скриптов и двух xml файлов.

Downloader.ps1 - этот скрипт качает все зависимости (кроме серверных ОС и System Center 2012 R2). Рекомендуется запускать на ночь.

В зависимости от скорости интернета может качать от 2-3 до бесконечности часов. Можно запускать с опцией -DeploymentOnly, тогда он скачает только зависимости для вашего variable.xml (о нем ниже), но я не вижу в этом смысла, потому что 35+ гигабайт не так уж много, проще один раз скачать все-все-все и не думать об этом.

Для его работы необходим только Workflow.xml, однако если использовать ключ -DeploymentOnly, файл Variable.xml также необходим.

Перед запуском скрипта необходимо поставить Web Platform Installer и Winrar или 7zip. Скрипт нельзя запускать из ISE и с операционных систем моложе Windows 8 или Windows Server 2012, так как он использует функцию монтирования образа для извлечения из него файлов. После того как скрипт закончит скачивание файлов Вам необходимо добавить в папку куда он скачал файлы (C:Installer по умолчанию) дистрибутивы System Center 2012 R2 и Windows Server 20122012 R2 в распакованном виде в соответствующие папки. Возможно Вам придется второй раз запустить его, для скачивания зависимостей SCCM, но я могу ошибаться, а проверять лень. 😉

downloader

VMCreator.ps1 - данный скрипт создает виртуальные машины, копирует на них зависимости, создает unattend.xml файлы для них, создает домен. После чего, когда домен создан передает управление процессом следующему скрипту (в случае если Вы создаете новый домен). В случае если Вы просто создаете виртуальные машины, он не передает управление следующему скрипту и его необходимо запускать руками. Для его работы всегда необходимы оба xml файла. Скрипт нельзя запускать из ISE.

Перед запуском скрипта Вам необходимо подготовить Variable.xml файл, но об этом в следующей статье, главная особенность этого скрипта, он использует готовый vhd(x) файл для разворачивания, проще всего еще сделать с помощью утилиты ”Convert-WindowsImage.ps1”. В скрипте очень хорошо описаны ключи, но на случай если вам лень её необходимо запускать со следующими ключами:

.Convert-WindowsImage.ps1 -Source “путь_до_исо_файла.ISO” -Feature NetFx3 -VHDFORMAT VHDX -Edition ServerStandard -VHDPartitionStyle GPT

Конечно, вы можете сделать и по-другому, но это гарантированный минимум. С данным vhdx можно создавать виртуальные машины второго поколения. Чисто теоретически весь System Center можно развернуть на машинах второго поколения, но я уверен что workflow.xml захочет 2008r2 для портала Service Manager, хотя с выходом Sharepoint Foundation 2010 SP2 его можно ставить и на 2012R2.

После запуска скрипт проведет проверку вашего variable.xml (-SkipValidation если Вам этого не нужно).

Installer.ps1 - скрипт, который производит установку всех компонентов вашего скриптового разворачивания. Для его работы всегда необходимы оба xml файла. Скрипт нельзя запускать из ISE.

Скрипт можно использовать для проверки вашего variable.xml (-ValidateOnly), так же проверки можно пропускать (-SkipValidate ”All”,”Local”,”ActiveDirectory”,”Remote”,”RoleCombinations”). Подробнее можно посмотреть в самом скрипте. В скриптах PDT на удивление сухо описаны ключи, но после того как Вы немного с ними “потыкаетесь” все станет ясно.

Про этот скрипт особо нечего сказать, так как вся магия происходит в файле Variable.xml 😉

Workflow.xml - этот файл содержит в себе описание всего и вся, это база данных, мозг PDT, если Вам угодно. В нем содержаться URL для скачивания зависимостей, команды для установки зависимостей компонентов System Center, команды для установки собственно компонентов, команды для создания NLB для компонентов и установки компонентов в режиме высокой доступности, описание интеграций между компонентами System Center и зависимости компонентов, и, наверное, что-то еще, я не читал все ~35000 строк. 😉

Если Вы хотите писать Variable.xml с нуля и без PDT GUI (о нем отдельное слово в следующей статье) рекомендую ознакомиться с тем что удалось выдрать из Workflow.xml.

Variable.xml - это файл конфигурации, в нем Вы должны описать конфигурацию разворачиванияю. Виртуальные машины, роли компонентов, базы данных, отказоустойчивость, словом все-все-все. Основную часть времени работы с PDT составляет написание файла Variable.xml, ну и, конечно же, ожидание разворачивания.

Об этом чудесном файле будет моя следующая статья.

Ссылки: PDT и PDT GUI

Written on June 17, 2014