- PVSM.RU - https://www.pvsm.ru -
В своей работе я использую образы Windows Image — всем известные WIM файлы. Подход, которым я хочу сегодня поделиться, прямо противоположен созданию универсального образа с полным наборам софта и сервисов. Ключевым отличием от «Толстого — Thick» подхода является то, что они что в нем находится минимум — только то, что необходимо для запуска puppet agent и дальнейшей установки необходимого софта. Для установки софта я использую chocolatey, все пакеты берутся с chocolatey.org [1], а для кастомных пакетов имеется репозиторий на сервере в датацентре). Все остальное — ставится потом, в зависимости от требований конфигурации сервера. На мой взгляд это добавляет намного больше гибкости, и все что нужно, фактически, добавлять сервис паки и большие обновления. И вот сегодня — как раз тот день: «Пора бы обновить образ». Если говорить точнее, то сегодня нужно создать образ с нуля для Windows Server 2012 Standard с определенного ISOшника.
Сложностей как таковых здесь нет, единственное что принципиально для меня — все должно быть просто, чтобы через год я (или кто-то из моих админов) открыл свой, прочел короткое README и все понял.
На том же сервере, где располагается WDS добавлена роль Hyper-V, на котором есть несколько виртуальных машин, предназначенных специально для этого. В даном случае виртуалка с именем «server-2012-std-img» на которой «голая» версия Server 2012 Standard. Снимать образы с виртуалок намного проще, т.к. можно средствами windows примонтировать vhd и сделать wim capture прямо с примонтированного диска. При данном подходе нет необходимости перезагружать реальный сервер.
Делаем апдейты. Для установки апдейтов в образ пользуюсь триалом wuinstall. Каждый раз приходится загружать заново (ссылка [2]), т.к. срок триала по все видимости зашит в exe файле. Мысли вслух: Надо бы сделать package для chocolatey для wuinstall, тогда будет возможность автоматизировать установку апдейтов, сделать подарочек моему админу по офису...
Знаю что можно использовать оффлайн апдейты скачанные через wsusoffline, и делать так называемое «Оффлайн обслуживание образа», но в моей ситуации это не подходит во-первых из-за наличия на 70% серверов Server 2008 (не R2), который сильно отличается (в худшую сторону) от R2 и 2012 по управлению пакетами и функционалу offline servicing. А так как я люблю унификацию процессов где это возможно, делаю это через wsusoffline. К тому же интеграция сервис пака часто не работает через offline servicing. Может кто-то знает, где Microsoft хранит WIM или ISO файлы дистрибутивов с последними обновлениями?
Кстати, я не включаю драйвера в сам образ системы, т.к. они берутся из сетевой папки, которая указывается в unattend.xml конфиге, а папка находится в доступном для установщика Windows месте. Не забудьте удостовериться в правах доступа к Вашей папке с драйверами (которые должны быть, естественно, распакованы с доступными файлами inf).
<settings pass="offlineServicing">
<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DriverPaths>
<PathAndCredentials wcm:action="add" wcm:keyValue="1">
<Credentials>
<Domain>mydomain</Domain>
<Password>wds-password</Password>
<Username>wds-user</Username>
</Credentials>
<Path>\wds-server.mydomain.localREMINSTDrivers</Path>
</PathAndCredentials>
</DriverPaths>
</component>
</settings>
Установка Chocolatey — процесс достаточно простой, главное удостоверьтесь что у Вас стоит фреймворк 3.5.
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%chocolateybin
Все, настройка образа на этом закончился. Пора его создать!
::Config file that contains some paths and date patterns
call config.cmd
SET mountdrive=H
echo Creating image %captured_wims%server-2012server-2012x64.standard.sp2.%date%.%RANDOM%.install.wim
utilsimageximagex.exe /capture %mountdrive%: %captured_wims%server-2012x64.standard.sp2.%date%.%RANDOM%.install.wim " Windows Server 2012 SERVERSTANDARD"
Процесс создания образа Server 2012 Standard со всеми апдейтами занимает около 20 минут на виртуальной машине, на живом сервере, конечно быстрее, но не так удобно. Я не сильно переживаю по этому поводу, т.к. процесс это в большинстве случаев плановый.
Долго-ли коротко-ли, образ создался, скрипт положил его куда надо, назвал как надо — теперь я его беру и добавляю в WDS сервер. Готово!
Забегая вперед скажу, что puppet agent нужно будет установить при первой загрузке новой системы, которую мы будем разворачивать на новом железе, а нужно это для того, чтобы сервер стал доступен для настройки при помощи манифестов puppet. Сделать это можно и вручную, но можно и автоматически.
cinst puppet -ia "PUPPET_MASTER_SERVER=puppet.mydomain.local"
Да, да, если кто не знаком с chocolatey, очень советую испытать эту радость.
В данном случае установится последняя версия этого [3] пакета puppet, которая зарегистрируется на сервере puppet.mydomain.local.
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Description>Install Puppet</Description>
<Path>cinst puppet -ia "PUPPET_MASTER_SERVER=puppet.mydomain.local"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Description>Request Certificate</Description>
<Path>("C:Program Files (x86)Puppet LabsPuppetbinpuppet_interactive.bat" --test) && echo OK</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Description>Stop Puppet Service</Description>
<Path>(sc stop puppet) && echo Service Stop OK</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>4</Order>
<Description>Start Puppet Service</Description>
<Path>(sc start puppet) && echo Service Start OK</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
Таким образом, система пакетов Chocolatey заменяет множество индивидуальных конфигураций, и сильно помогает автоматизировать установку, вместе с тем обеспечивая гибкость конфигурирования (помните, Вы не обязаны использовать chocolatey.org в качестве источника пакетов). Использование менеджера пакетов при развертывании Windows Server, по моему мнению, еще один этап на пути к переносу инфраструктуры на IaaC, а выбор между «Тонким» и «Толстым» образами — ключевым в данной ситуации.
В моей сети Windows и Linux работают в тесной связке друг с другом, поэтому я по возможности стараюсь найти универсальные OpenSource решения, которые будут работать на обоих платформах. Я совершенно не оспариваю факт что SCCM — прекрасный продукт для подготовки, поддержки и развертывания Windows, но он официально не поддерживает Linux (пруф [4]) — а это значит что за Ваши деньги, заплаченные за SCCM, с интеграцией придется разбираться самому. К тому же, Open Source делает нашу жизнь лучше!
А как Вы решаете вопросы гетерогенности инфраструктуры? Очень буду рад услышать Ваше мнение, уважаемый Хабр!
Автор: kireevco
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/49691
Ссылки в тексте:
[1] chocolatey.org: http://chocolatey.org
[2] ссылка: http://wuinstall.com/documents/WuInstallProTrial_Version.zip
[3] этого: http://chocolatey.org/packages/puppet
[4] пруф: http://technet.microsoft.com/en-us/library/gg682077.aspx#BKMK_SupConfigSiteSystemReq
[5] Источник: http://habrahabr.ru/post/204314/
Нажмите здесь для печати.