Развертывание большого количества систем и приложений — задача непростая и многоэтапная. За долгое время было разработано большое количество технологий и инструментов, их реализующих, поэтому с ходу разобраться не всегда просто. Сobbler сводит разные решения в один проект, а единый интерфейс позволяет не отвлекаться на особенности работы с каждым из них.

 

Проект Cobbler

Cobbler — это сервер сетевой установки и обновления Linux- и Windows-систем, позволяющий создать среду бездисковой загрузки, включающую образы и репозитории пакетов, сконфигурировать и развернуть ОС. Поддерживаются как реальные ПК, так и виртуальные машины. По факту Сobbler — это удобная надстройка над привычными инструментами PXE, TFTP, DHCP и DNS, обеспечивающими сетевую загрузку систем, и утилитами работы с образами и репозиториями. От администратора скрыты особенности и настройки всех компонентов, после установки доступны шаблоны конфигурационных файлов, которые находятся в одном каталоге, необходимо лишь изменить их под свои условия. Управление всеми связанными демонами (перезагрузка и обновление конфигурации) осуществляется всего одной командой.

Также Cobbler интегрирован в среду управления Spacewalk (систему автоматизации управления конфигурацией Puppet и Func), позволяющую отдавать команды одновременно на множество систем. Причем можно, например, как вызывать Puppet после развертывания ОС средствами Cobbler, так и наоборот — использовать Cobbler в манифестах Puppet. Поддерживается интеграция с LDAP. Все это обеспечивает полный цикл управления IT-инфраструктурой.

Изначально Cobbler был рассчитан на установку и использование в дистрибутивах, производных от Red Hat, — RHEL, CentOS, Fedora и так далее. Со временем он был адаптирован для Ubuntu, Debian, SUSE, а в репозиториях этих дистрибутивов появились пакеты. При развертывании с помощью Cobbler OC Windows всю первоначальную подготовку образов необходимо будет делать самостоятельно при помощи Windows AIK / Windows ADK.

Написан Сobbler на Python, распространяется по лицензии GNU GPLv2. Управление осуществляется при помощи консольной утилиты cobbler или веб-интерфейса. Для интеграции со сторонними приложениями предлагается XML-RPC-интерфейс.

 

Установка Сobbler

Сobbler, несмотря на внешнюю простоту, достаточно сложная система, прежде всего из-за большого спектра различных технологий, но он обеспечивает основную функциональность из коробки практически без дополнительной подстройки. Хотя представление о сетевой загрузке, знание PXE и методики автоматизации установки дистрибутива очень приветствуются.

На момент написания статьи текущая версия 2.6.11. В репозитории EPEL находится именно она, в репозитории Ubuntu релиз ощутимо запаздывает (на момент написания статьи — 2.4.1). При необходимости установить самый свежий релиз всегда можно, используя исходные тексты Git. В принципе, алгоритм развертывания Сobbler не меняется уже несколько лет, поэтому все сказанное актуально и для других версий. Работе Cobbler будет мешать firewall и SELinux, в тестовой среде их можно отключить. В брандмауэре должны быть открыты порты 69, 80, 443 и 25151 (в установке по умолчанию). В Red Hat дистрибутивах понадобится подключить репозиторий EPEL, в Ubuntu нужный пакет уже есть в основном репозитории.

$ sudo apt install cobbler cobbler-web

В принципе, cobbler-web — необязательный компонент и необходим только в том случае, если планируется использовать веб-интерфейс. Все настройки можно делать в командной строке.

В процессе будут установлены некоторые пакеты для удовлетворения зависимостей. Следует внимательно ознакомиться с их списком: для разных дистрибутивов и их версий он будет отличаться. В качестве DNS и DHCP может быть использован как сервер, установленный на локальной системе, так и любой внешний доступный сервер.

В Ubuntu, например, все пакеты, необходимые для сетевой загрузки и работы с образами, представлены в качестве рекомендуемых и по умолчанию не ставятся: DNS (BIND9), DHCP-сервер, TFPTD-утилиты создания метаданных createrepo, debmirror, genisoimage, pxelinux и другие. Сobbler поддерживает dhcp3-server и dnsmasq (обеспечивает как DNS, так и DHCP). В зависимостях пакетов указано имя dhcp3-server, но в новых версиях Ubuntu пакет переименован в isc-dhcp-server. Сам Cobbler имеет встроенный TFTP-сервер, но рекомендуется использовать внешний.

В Red Hat список, конечно, будет чуть другой.

# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh epel-release-latest-7.noarch.rpm
# yum install cobbler cobbler-web dhcp debmirror pykickstart system-config-kickstart dhcp mod_python tftp cman -y

После установки запускаем:

$ sudo service cobbler start

В Red Hat демон называется cobblerd. Все установлено, теперь можно переходить к настройкам.

 

Настройки Cobbler

После установки в каталоге /etc/cobbler появится несколько подкаталогов, в которых находятся шаблоны сервисов, параметры аутентификации, выбора модулей и другие. Назначение некоторых и настройки внутри, в принципе, должны быть понятны. Кроме этого, в /var/lib/cobbler будут размещены шаблоны, касающиеся настройки ОС и работы PXE. Например, в kickstarts найдем несколько готовых шаблонов для работы Anaconda kickstart, в loaders — загрузчики и так далее. При наличии своих готовых файлов просто копируем сюда. В Red Hat дистрибутивах нужный файл после установки ОС находится в домашнем каталоге root:

# cp /root/anaconda-ks.cfg /var/lib/cobbler/kickstarts/centos7.ks

В Ubuntu шаблоны kickstart в установочном образе находятся в каталоге pressed:

$ sudo cp -v preseed/*seed /var/lib/cobbler/kickstarts/
«/mnt/preseed/sample.seed» -> «/var/lib/cobbler/kickstarts/sample.seed»

Демон cobblerd берет установки в файле /etc/cobbler/settings. Здесь находятся параметры использования других сервисов (TFTP, DHCP, Puppet, Func, LDAP и так далее), отправка отчетов на SMTP, виртуальные интерфейсы, рабочие каталоги и прочее. Файл в YAML-стандарте, хорошо комментирован, поэтому разобраться можно.

Управление настройками и функциями Cobbler производится при помощи веб-интерфейса и консольной утилиты cobbler. Все параметры можно посмотреть в man-странице или запустив с ключом --help.

Веб-интерфейс доступен по адресу https://server/cobbler_web, также через веб можно получить доступ к XML-RPC http://server/cobbler_api. В вебе четыре секции: Configuration, Resources, Actions и Cobbler. Пользоваться в общем просто: нажимаем ссылку или заполняем параметры. В веб-консоли в большинстве пунктов доступны основные параметры, более тонкую настройку можно сделать только в консоли. Хотя, например, настройка системы через веб устроена очень наглядно и удобно.

После установки для проверки готовности компонентов сервера и анализа файла settings необходимо запустить утилиту cobbler с параметром check:

$ sudo cobbler check

При первом запуске в ответ получим список проблем, которые следует решить перед использованием Cobbler. В каждой ситуации он будет свой, хотя несколько пунктов, касающиеся установок по умолчанию, обычно характерны для всех дистрибутивов. Следует внимательно их изучить и после устранения повторно запустить проверку.

Проверка готовности при помощи cobbler check
Проверка готовности при помощи cobbler check

На этом этапе можно получить ошибку. Наиболее распространены две. Первая, «httpd does not appear to be running and proxying cobbler», появляется в том случае, если веб-сервер Apache или cobblerd не запущен (например, стартовал и отвалился из-за ошибки), отключен модуль веб-сервера mod_proxy, занят другим приложением или блокирован брандмауэром 80-й или 25151-й порт. Следует проверить статусы сервисов и просмотреть логи. В Ubuntu, например, модуль mod_python установлен в виде зависимостей, но конфликтовал с mod_wsgi, поэтому пришлось его отключить.

$ sudo a2dismod python

Изменить порты можно в файле setting в параметрах:

http_port: 80
xmlrpc_port: 25151

Вторая ошибка связана с невозможностью провести аутентификацию в XML-RPC.

xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">

Необязательно это проблема учетных данных, скорее неправильно настроен определенный параметр или сервис. Но разберемся с управлением учетными записями.

 

Учетные данные

Во время установки автоматически ставится логин/пароль cobbler/cobbler для доступа через веб-интерфейс или XML-RPC. Аутентификация возможна разными способами: логин/пароль, PAM, Kerberos, LDAP, Spacewalk, есть тестовый (testing/testing) и свой модуль. Настраиваются они в /etc/cobbler/modules.conf. По умолчанию:

[authentication]
module = authn_configfile

В данном случае используется файл /etc/cobbler/users.digest, логин и пароль для которого генерируется как при работе с веб-сервером:

$ htdigest /etc/cobbler/users.digest "Cobbler" user

Ввести по запросу пароль. Если указан способ authn_denyall, это значит, что вход заблокирован, и нужно изменить метод.

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

[authorization]
module = authz_allowall

Это удобно, если доступ будет у небольшого количества пользователей. Заменив значение на authz_ownership, мы получаем возможность использования групп, то есть определенные пользователи могут управлять установкой своих систем. Группы описываются в файле users.conf. Все, кто входит в группу admin или в секцию [admins], могут управлять любыми объектами. Группа для всех объектов по умолчанию (то есть тех, для которых не указан владелец параметром --owner в командной строке) устанавливается параметром default_ownership в файле settings:

default_ownership:
- "admin"

При установке новых ОС для root используется пароль, указанный в параметре (в зашифрованном виде):

default_password_crypted: ""

По умолчанию пароль — cobbler, но следует его изменить, вставив между кавычками сгенерированный при помощи команды openssl passwd -1 MD5-хеш.

Еще два параметра в файле требуют внимания, иначе работать не будет: server и next_server, в которых следует прописать IP-адрес или имя сервера. Они используются для поиска сервера клиентами и при PXE-загрузке.

server: 192.168.1.1
next_server: 192.168.1.1

В Ubuntu нужный IP ставится во время установки, в Red Hat обычно стоит 127.0.0.1. Также можно разрешать локальные запросы отправлять на localhost, а не использовать внешний IP:

client_use_localhost=1

Далее просматриваем все параметры и включаем нужные. Прописываем в bind_master и default_name_servers серверы, которые будут использоваться, и включаем управление нужными функциями. После установки DNS и DHCP по умолчанию отключены — просто меняем 0 на 1 там, где нам нужно:

manage_dhcp: 1
manage_dns: 1
manage_tftpd: 1

Еще важный момент. До версии Cobbler 2.4.0, чтобы вступили в силу все изменения в /etc/cobbler/settings, требовалась обязательная перезагрузка демона. Теперь все параметры можно настраивать на лету при помощи команды cobbler setting. По умолчанию такая возможность отключена, чтобы ее активировать, следует установить в 1 параметр allow_dynamic_settings и перезапустить демон.

Смотрим все настройки:

$ sudo cobbler setting report
Вывод установок Cobbler
Вывод установок Cobbler

И меняем нужную:

$ sudo cobbler setting edit --name=manage_dhcp --value=1

После этого значение вступит в силу и будет сохранено в файле. Если ошибиться с названием параметра, будет выдана ошибка, но неправильное значение будет молча проигнорировано.

 

Настройки служб

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

В Windows появилась функциональность для борьбы с читерами

Стало известно, что в Windows 10 Fall Creators Update, вышедшем неделю назад, заработала с…