Linuxoid
OpenSource forever
Развертывание Linux при помощи Cobbler
Статья опубликована в апрельском номере Системный Администратор
Если часто приходится разворачивать большое количество систем, без средств автоматизации не обойтись. В Linux есть все необходимое.
Официальное руководство по установке любой ОС начинается с фразы “Вставьте диск в привод …”, это привычный путь, который подходит лишь для инсталляции одной двух систем, под конкретные условия. Если же стоит задача развернуть целый парк машин, необходимо подумать уже об оптимизации и автоматизации процесса. Ведь ставить даже десяток серверов с одного CD/DVD с заявленным набором приложений достаточно долгая и утомительная процедура, при чем при переустановке системы приходится повторять все сначала.
В различных советах по быстрому развертыванию большого количества Linux систем предлагалось использовать два пути: клонирование при помощи решений вроде dd, partimage, Clonezilla, Systemimager или Ghost4Linux, и автоматическая установка. Первый вариант не обеспечивает нужной гибкости, и подходит больше при развертывании систем на однотипных компьютерах, например виртуальных машинах. Второй вариант, известен как Kickstart достаточно давно и популярен в дистрибутивах базирующихся на RedHat, и с недавнего времени Ubuntu и openSUSE (называется AutoYaST).
Современные компьютеры в большей части поддерживают сетевую загрузку, поэтому необходимости в использовании привода компакт-дисков отпадает. Остается настроить лишь TFPT, DHCP и DNS серверы, подготовить образы и kickstart/AutoYaST файлы. Если разобраться ничего сложного процесс собой не представляет и используется уже давно. Единственный минус такого способа, это неудобство управления. Практически все операции, по развертыванию, настройке, подключению репозитариев, отслеживанию состояния и так далее приходится выполнять вручную. До недавнего времени для Linux не было проектов обеспечивающих создание удобной среды установки, не говоря уже о более мощных решениях управления инфраструктурой, на подобие System Center Configuration Manager предлагаемого Microsoft. Но необходимость в подобных решениях давно назрела и приятно отмечать, что в последнее время наметились изменения в лучшую сторону и теперь есть даже из чего выбирать. Это проект Cobbler ( https://fedorahosted.org/cobbler ) о котором заговорили еще в 2007, о нем пойдет речь далее в статье. Также следует отметить проект Ultimate Deployment Appliance ( http://www.ultimatedeployment.org/ ) разработчики которого предлагают готовую систему (поставляет в виде образа виртуальной машины) обеспечивающую все необходимые сервисы для установки Windows 2000/XP/2003, Linux (Ubuntu, Fedora и SUSE), VMware ESX и Solaris. Для чего используются все технологии RIS, Kickstart, AutoYaST и JumpStart/Solaris. Единственный минус, то что в списке официально поддерживаемых присутствуют только устаревшие версии дистрибутивов.
Далее Quattor ( http://sourceforge.net/projects/quattor ) — набор инструментов обеспечивающий весь этап от установки до обслуживания ОС. Далее FAI (Fully Automatic Installation) ( http://www.informatik.uni-koeln.de/fai/ ) весьма удобная разработка обеспечивающая процесс автоматической неинтерактивной установки Linux систем (Debian, Ubuntu, openSUSE/SLES, RHEL, CentOS, Mandriva, Solaris) как в физическую, так и виртуальную среду с большими возможностями. В качестве базовой системы используется Debian/Ubuntu процесс установки управляется агентом загружаемым посредством PXE, CD или USB носителя.
Проект Сobbler
Сobbler сервер сетевой установки для Linux, обеспечивающий быстрое построение необходимой среды развертывания и управления процессом инсталляции ОС на новые компьютеры или виртуальные машины (Xen, qemu, KVM или VMware Server), так и последующей переустановки систем. Причем от администратора скрыты особенности работы виртуальных машин. Написан Сobbler на Python и является связкой для некоторых стандартных для таких случаев компонентов PXE, TFTP, DHCP и других. Он упрощает администратору подготовку среды бездисковой загрузки, загрузку образов и поддержание нескольких конфигураций. Управление осуществляется при помощи консольной утилиты cobbler или удобного веб-интерфейса. При переустановке системы может быть использована PXE загрузка, кроме этого GRUB перенастраивается на запуск среды установки. Предусмотрено создание подготовленного ISO образа для локальной установки и переустановки системы. При этом Сobbler берет на себя всю нагрузку по настройке TFTP, DHCP, DNS, зеркалированию репозитариев.
Для переустановки и поддержки виртуализации задействуется консольная утилита koan (kickstart-over-a-network).
Следует заметить, что Cobbler интегрирован в среду управления Spacewalk и Symbolic, которые совместно с приложением автоматизации управления конфигурацией Puppet обеспечивают полный цикл управления IT инфраструктурой построенной с применением OpenSource компонентов. Своего рода аналоги SCCM от Microsoft, который используется в Windows среде. Распространяется Cobbler по лицензии GNU GPL.
Установка Cobbler
Изначально Cobbler рассчитан на установку и развертывание дистрибутивов производных от RedHat. Поэтому его в первую очередь и следует рекомендовать для установки RHEL, CentOS, Fedora и других решений базирующихся на YUM. Возможность развертывания Debian, Ubuntu, openSUSE и их производных также предусмотрена. Хотя это потребует на порядок больше усилий, которые к сожалению не всегда приводят к желаемому результату. Дистрибутивы Slackware и Gentoo в списках поддержки не значатся. Забегая наперед скажу, что малый список ОС это и плюс и минус. Минусы понятны, не где развернуться, а вот плюс вытекает из минуса. Учитывая, возможность/необходимость создания локального репозитария поддержка одновременно большого количества дистрибутивов может стать накладной по ресурсам. Ведь придется хранить несколько версий ОС и зеркала репозитариев.
Так как Fedora находится на острие разработки RedHat, в его репозитариях, как правило, находится более поздняя версия Cobbler и Koan.
При необходимости установить самый свежий релиз всегда можно использовать GIT репозитарий проекта ( http://git.fedoraproject.org/git/cobbler/ ) или архивом с исходными текстами ( http://people.fedoraproject.org/
shenson/cobbler/ ) и собрать все необходимое вручную.
В RHEL и CentOS необходимые пакеты находятся в Extras Packages, который необходимо в начале подключить:
В процессе, будут установлены некоторые пакеты для удовлетворения зависимостей, в частности TFTP сервер необходимый для раздачи образов и версия Cobbler 1.6.6 (на момент написания статьи, в архивах уже 2.0.3, но сути это не меняет поэтому не будем останавливаться).
Кроме этого нам понадобится веб и DHCP сервер, набор утилит yum-utils, менеджер кластера cman и xinetd:
Все установлено, теперь можно переходить к настройкам. В принципе веб-сервер не обязательный компонент и необходим только в том случае, если планируется использовать веб-интерфейс. Иначе все настройки можно производить в командной строке. Чтобы просмотреть все параметры утилиты cobbler, можно в man странице или запустив ее с параметром help.
Настройки Cobbler
Настройки собственно Сobbler находятся в каталоге /etc/cobbler. Основным является файл /etc/cobbler/settings, в котором прописываются установки сервисов используемые Cobbler в своей работе, настройки LDAP, виртуальных интерфейсов, расположение рабочих файлов и многое другое. Назначение некоторых параметров станет понятно из описания.
Чтобы проверить готовность компонентов сервера развертывания и провести семантический анализ файла /etc/cobbler/settings (файл в формате YAML, YAML Ain’t Markup Language) необходимо запустить cobbler с параметром check:
В ответ получим список, озаглавленный как “The following potential problems were detected” в нем содержатся проблемы, мешающие Cobbler и главное подсказки для ее решения. При “чистой” установке в минимальной CentOS, у меня получилось 10 пунктов. Запущенный “cobbler check” позволяет определить проблемы
В других ситуациях их количество, вероятно, будет иным. Кроме этого после изменения параметров внутри файла /etc/cobbler/settings, проверку необходимо запустить повторно. Причины две: могут потребоваться дополнительные системные установки исходя из новой конфигурации (например, запустить DHCP сервер) или появится семантические ошибки, которые, кстати, могут появиться, как говорят на ровном месте:
Теперь параметры. Как говорилось, в большинстве они понятны и хорошо комментированы. В частности параметр server и next_server указывают на локальную систему, следует здесь прописать IP-адрес или имя, которое будет доступно в сети, иначе не будет возможна сетевая PXE загрузка.
Кроме этого Cobbler может управлять настройками служб DNS, DHCP и TFTPD, в каталоге /etc/cobbler расположены специальные шаблоны (файлы с расширением template) для управления dnsmasq, named, tftpd или dhcpd, в зависимости от того, какие из них будут использованы в работе (dnsmasq может заменить все указанные сервисы — DNS, DHCP и TFTP). По умолчанию функции управления для DNS и DHCP отключены. Поэтому настройки необходимо производить самостоятельно, используя конфигурационные файлы соответствующих сервисов. Учитывая, что Cobbler часто устанавливается на рабочем месте администратора, а DNS и DHCP сервисы обеспечиваются другими системами, такие настройки обычно подходят для большинства ситуаций. Если же все необходимое будет развернуто на одной станции (например, на ноутбуке аутсорсера), то удобнее для их настройки задействовать Cobbler. Тем более, что это дает несколько плюсов, о которых будет понятно по ходу статьи. Соответственно и сами сервера обеспечивающие необходимые сервисы должны быть установлены в системе.
Далее активируем их в файле /etc/cobbler/settings, установив в “1” два параметра:
По умолчанию в качестве DNS и DHCP сервера используются BIND и DHCP, переопределить их на dnsmasq можно в файле /etc/cobbler/modules.conf, заменив два параметра:
Необходимо открыть в правилах iptables доступ ко всем используемым портам 69, 80 и 25151 (XMLRPC порт, можно изменить в настройках файла settings). Если используется SELinux, необходимо также разрешить сетевой доступ к веб-серверу Apache и установить необходимый контекст:
Хотя в некоторых случаях проще отключить SELinux. Например:
И перезагрузить систему.
Разрешаем запуск tftp в конфигурационном файле xinetd, для чего в /etc/xinetd.d/tftp устанавливаем параметр ‘disable’ в ‘no’
Возможна аутентификация через веб-интерфейс несколькими способами пароль созданный утилитой htdigest (сохраняется в файле /etc/cobbler/users.digest), Kerberos, LDAP, Spacewalk/Satellite и тестовый (используется для отладки, всегда testing/testing). Но в настройках по умолчанию аутентификация через веб-интерфейс блокирована. Разрешим ее, для примера будем использовать digest-файл. Для чего в файле /etc/cobbler/modules.conf меняем значение параметра module в секции authentication:
По умолчанию логин и пароль для регистрации установлены в cobbler/cobbler. Его следует изменить при помощи команды:
Теперь очередь шаблонов сервисов, которые находятся в каталоге /etc/cobbler в файлах с расширением .template. По своей структуре они соответствуют аналогичным файлам в которых производятся настройки сервисов. Здесь необходимо лишь уточнить текущие сетевые настройки, в частности IP адреса DNS сервера, шлюза. Причем в файлах используются переменные, и в результирующих конфигурациях будут уже осуществлены подстановки из настроек текущей системы: Например, /etc/cobbler/dhcp.template:
Кстати после внесения изменений в конфигурационные файлы и шаблоны, нет необходимости перезапускать вручную демон Cobbler или другие сервисы, просто следует синхронизировать данные командой:
После чего будут последовательно остановлены все службы, заменены конфигурационные файлы шаблоном и произведен запуск. При работе через веб-интерфейс нажимаем ссылку SYNC. После всех настроек запускаем сервисы:
И обеспечиваем их автозапуск
Теперь можно переходить по адресу http://127.0.0.1/cobbler/web/, где после регистрации будет доступно меню редактирования параметров. Просмотр настроек через веб-интерфейс
Подготавливаем систему к развертыванию
В веб-интерфейсе доступно 8 основных меню: DOCS, SETTING (вывод установок Cobbler), DISTROS, PROFILES (профили установки в том числе и на виртуальные машины), SYSTEMS (системы), REPOS (репозитарии), IMAGES и KICKSTARTS. Принцип настроек при помощи графического меню достаточно прост. Для добавления выбираем нужный пункт, в нем ADD и заполняем предложенные поля. Другие подпункты позволяют вывести список и произвести поиск по заданным критериям.
Работу в консоли разберем чуть подробнее.
Для импорта образа системы вставляем CD/DVD диск в привод или монтируем ISO в один из каталогов. Затем используем ключ import:
Процесс импорта образа выводится в консоль, по окончании будут выполнены еще три шага – добавление дистрибутива, в процессе которого создаются профили (например, в CentOS их три – обычный, XEN и Rescue), создание ассоциации с репозитарием и kickstart файлом. Меню добавления distro
Кроме этого существует еще рад дополнительных параметров. Все они описаны в “man cobbler”. Например, —breed указывает на происхождение дистрибутива, различают — redhat, debian, ubuntu и suse. Кстати понятие дистрибутив (distro) в Cobbler чуть отличается от общепринятого. В терминологии Cobbler distro это набор файлов для загрузки – ядро и initrd (обязательные), плюс – kickstart файл, набор дополнительных параметров ядра и другие. Список Kickstart шаблонов
Кроме импорта из образа distro можно создать отдельной командой:
Параметры вообщем понятны, за исключением kopts – при помощи которого указываются параметры ядра и ksmeta позволяющего дополнять или подменять установки в kickstart файле специфическими для данного distro. Загрузочное меню Cobbler
После добавления дистрибутива он будет показан в веб-консоли или в списке команды cobbler:
Если в списке дистрибутива нет, то нужно просто выполнить “cobbler sync”. Профиль представляет собой файл с описанием всех параметров используемых при установке системы. Полный их список можно просмотреть при помощи ключа report или в веб-консоли.
Профили можно копировать, создавая другие установки на основе имеющихся:
Теперь достаточно указать отличия для нового профиля, например свой kickstart файл:
Чтобы была возможность установить из kickstart файла пакеты, которых нет в основном репозитарии, следует указать дополнительные репозитарии, которые затем используются в профилях.
Получим список известных репозитариев:
Здесь обнаружится один неприятный момент. Даже если бы мы использовали при импорте образа DVD, все пакеты которые на нем имеются, будут доступны лишь при установке дистрибутива. Но они не могут служить сетевым репозитарием, впрочем, не всегда это необходимо, так как в большинстве случаев используются более свежие файлы, полученные с внешнего репозитария. Добавить новый репозитарий в список Cobbler просто:
Обновление большого количества систем лучше производить из локальной копии. Создадим ее:
Подобные команды необходимо запускать перед каждой установкой или обновлении систем. Если подобные операции производятся часто, то команду “cobbler reposync” можно поручить cron. Учитывая размеры репозитариев, выполнение последней команды займет время, файлы будут помещены в нашем случае в /var/www/cobbler/repo_mirror/Centos5-RPMFORGE. Собственно все связанные файлы сохраняются в подкаталоги в /var/www/cobbler, поэтому этот раздел должен иметь достаточно места. Теперь подключим файлы с DVD создав еще один репозитарий:
Список репозитариев указывается в профиле при помощи:
Причем если в settings параметр yum_post_install_mirror установлен в “1” (по умолчанию), эти репозитарии будут доступны в системе и после ее установки.
Теперь можно запускать клиентскую машину, в процессе PXE загрузки будет выведено меню, шаблон которого находится в файле /etc/cobbler/pxe/pxedefault.template. При необходимости можно подправить файл pxedefault.template, чтобы информация больше соответствовала конкретным условиям. Пароль по умолчанию для пользователя root устанавливаемый в kickstart файле “cobbler” изменить его можно в параметре “default_password_crypted” файла /etc/cobbler/settings.
Cobbler позволяет сразу добавить систему в базу Cobbler с указанием конкретного профиля, в этом случае установка производится автоматически:
Кроме прочего при добавлении системы в каталоге /tftpboot/pxelinux.cfg/ будет создан специальный конфигурационный файл (имя соответствует МАС адресу). Остальные системы будут “довольствоваться” файлом default.
Если DHCP сервер управляется Cobbler, то можно указать еще и параметр “—ip=” и “ —hostname=”. После синхронизации настроек “cobbler sync” сервис DHCP будет готов выдать нужному клиенту его IP адрес.
Проверяем:
В случае, когда администратор, который управляет процессом развертывания, не может использовать PXE загрузку – система не имеет данной функции, не доступны настройки ВРСЗ и так далее, есть возможность создания ISO образа, который затем можно использовать для загрузки систем. Для этого используем ключ “buildiso”. Например, чтобы создать ISO образ содержащее все ядра и initrd файлы известные Cobbler с соответствующим меню, используем:
Такой диск (небольшого размера) можно использовать лишь для загрузки, в последующем все данные для установки будут получаться с сервера Cobbler. Если выбираемых вариантов много, можно создать образ содержащий профили только выбранных отдельных систем:
Кроме этого утилита cobbler позволяет создать диск, который содержит все необходимые файлы и пакеты:
Собственно это основное что хотелось бы рассказать о Cobbler. Достаточно простом в настройке решении, существенно упрощающем развертывание большого числа Linux систем.
Рис.1 Запущенный “cobbler check” позволяет определить проблемы
Рис.2 Просмотр настроек через веб-интерфейс
Рис.3 Меню добавления distro
Рис.4 Список Kickstart шаблонов
Рис.5 Загрузочное меню Cobbler
Источник