Рубрика:
Администрирование /
Автоматизация
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и четырех книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Развертывание Linux при помощи Cobbler
Если часто приходится разворачивать большое количество систем, без средств автоматизации не обойтись. В Linux есть все необходимое
Официальное руководство по установке любой ОС начинается с фразы «Вставьте диск в привод…» – это привычный путь, который подходит лишь для инсталляции одной-двух систем, под конкретные условия. Если же стоит задача развернуть целый парк машин, необходимо подумать уже об оптимизации и автоматизации процесса. Ведь ставить даже десяток серверов с одного CD/DVD с заявленным набором приложений – достаточно долгая и утомительная процедура, причем при переустановке системы приходится повторять все сначала.
В различных советах по быстрому развертыванию большого количества Linux-систем предлагалось использовать два пути: клонирование при помощи решений вроде dd, partimage, Clonezilla, Systemimager или Ghost4Linux и автоматическая установка. Первый вариант не обеспечивает нужной гибкости и подходит больше при развертывании систем на однотипных компьютерах – например, виртуальных машинах. Второй вариант известен как Kickstart достаточно давно и популярен в дистрибутивах, базирующихся на RedHat, и с недавнего времени – Ubuntu и openSUSE (называется AutoYaST).
Современные компьютеры по большей части поддерживают сетевую загрузку, поэтому необходимость в использовании привода компакт-дисков отпадает. Остается настроить лишь TFPT-, DHCP- и DNS-серверы, подготовить образы и kickstart/AutoYaST-файлы. Процедура прекрасно описана в статье Андрея Маркелова [1], если разобраться – ничего сложного процесс собой не представляет и используется уже давно. Единственный минус такого способа – это неудобство управления. Практически все операции по развертыванию, настройке, подключению репозитариев, отслеживанию состояния и так далее приходится выполнять вручную. До недавнего времени для Linux не было проектов, обеспечивающих создание удобной среды установки, не говоря уже о более мощных решениях управления инфраструктурой наподобие System Center Configuration Manager, предлагаемого Microsoft. Но необходимость в подобных решениях давно назрела, и приятно отмечать, что в последнее время наметились изменения в лучшую сторону и теперь есть даже из чего выбирать. Это проект Cobbler [2], о котором заговорили еще в 2007 году, о нем пойдет речь далее в статье. Также следует отметить проект Ultimate Deployment Appliance [3], разработчики которого предлагают готовую систему (поставляет в виде образа виртуальной машины), обеспечивающую все необходимые сервисы для установки Windows 2000/XP/2003, Linux (Ubuntu, Fedora и SUSE), VMware ESX и Solaris. Для чего используются все технологии RIS, Kickstart, AutoYaST и JumpStart/Solaris. Единственный минус – то, что в списке официально поддерживаемых присутствуют только устаревшие версии дистрибутивов.
Далее Quattor [4] – набор инструментов, обеспечивающий весь этап от установки до обслуживания ОС. Далее FAI (Fully Automatic Installation) [5] – весьма удобная разработка, обеспечивающая процесс автоматической неинтерактивной установки 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 [6] и Symbolic [7], которые совместно с приложением автоматизации управления конфигурацией Puppet [8] обеспечивают полный цикл управления ИТ-инфраструктурой, построенной с применением Open Source-компонентов. Своего рода аналоги 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.fedorahosted.org/git/cobbler/) или архив с исходными текстами (http://people.fedoraproject.org/~shenson/cobbler) и собрать все необходимое вручную.
В RHEL и CentOS необходимые пакеты находятся в Extras Packages, который необходимо вначале подключить:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Теперь устанавливаем:
# yum install cobbler koan
В процессе будут установлены некоторые пакеты для удовлетворения зависимостей – в частности, TFTP-сервер, необходимый для раздачи образов, и версия Cobbler 1.6.6 (на момент написания статьи в архивах уже 2.0.3, но сути это не меняет, поэтому не будем останавливаться).
Кроме этого, нам понадобится веб и DHCP-сервер, набор утилит yum-utils, менеджер кластера cman и xinetd:
# yum install yum-utils httpd xinetd cman
Все установлено, теперь можно переходить к настройкам. В принципе, веб-сервер – необязательный компонент и необходим только в том случае, если планируется использовать веб-интерфейс. Иначе все настройки можно производить в командной строке. Просмотреть все параметры утилиты cobbler можно в man-странице или запустив ее с параметром help.
Настройки Cobbler
Настройки Сobbler находятся в каталоге /etc/cobbler. Основным является файл /etc/cobbler/settings, в котором прописываются установки сервисов, используемые Cobbler в своей работе, настройки LDAP, виртуальных интерфейсов, расположение рабочих файлов и многое другое. Назначение некоторых параметров станет понятно из описания. Чтобы проверить готовность компонентов сервера развертывания и провести семантический анализ файла /etc/cobbler/settings (файл в формате YAML, YAML Ain"t Markup Language), необходимо запустить cobbler с параметром check:
# cobbler check
Рисунок 1. Запущенный cobbler check позволяет определить проблемы
В ответ получим список, озаглавленный как «The following potential problems were detected» – в нем содержатся проблемы, мешающие Cobbler, и главное – подсказки для ее решения. При «чистой» установке в минимальной CentOS у меня получилось 10 пунктов. В других ситуациях их количество, вероятно, будет иным. Кроме этого, после изменения параметров внутри файла /etc/cobbler/settings проверку необходимо запустить повторно. Причины две: могут потребоваться дополнительные системные установки исходя из новой конфигурации (например, запустить DHCP-сервер) или появиться семантические ошибки – кстати, как говорят, на ровном месте:
/etc/cobbler/settings is not a valid YAML file
Теперь параметры. Как говорилось, в большинстве они понятны и хорошо комментированы. В частности, параметр server и next_server указывают на локальную систему, следует здесь прописать IP-адрес или имя, которое будет доступно в сети, иначе не будет возможна сетевая PXE-загрузка:
server: 192.168.17.209 next_server: 192.168.17.209
Кроме этого Cobbler может управлять настройками служб DNS, DHCP и TFTPD, в каталоге /etc/cobbler расположены специальные шаблоны (файлы с расширением template) для управления dnsmasq, named, tftpd или dhcpd, в зависимости от того, какие из них будут использованы в работе (dnsmasq может заменить все указанные сервисы – DNS, DHCP и TFTP). По умолчанию функции управления для DNS и DHCP отключены. Поэтому настройки необходимо производить самостоятельно, используя конфигурационные файлы соответствующих сервисов. Учитывая, что Cobbler часто устанавливается на рабочем месте администратора, а DNS- и DHCP-сервисы обеспечиваются другими системами, такие настройки обычно подходят для большинства ситуаций. Если же все необходимое будет развернуто на одной станции (например, на ноутбуке аутсорсера), то удобнее для их настройки задействовать Cobbler. Тем более что это дает несколько плюсов, которые будут понятны по ходу статьи. Соответственно, и сами сервера, обеспечивающие необходимые сервисы, должны быть установлены в системе:
# yum install dhcp bind
или:
# yum install dnsmasq
Далее активируем их в файле /etc/cobbler/settings, установив в «1» два параметра:
manage_dhcp: 1 manage_dns: 1
По умолчанию в качестве DNS- и DHCP-сервера используются BIND и DHCP, переопределить их на dnsmasq можно в файле /etc/cobbler/modules.conf, заменив два параметра:
# cat /etc/cobbler/modules.conf
[dns] # module = manage_bind module = manage_dnsmasq
[dhcp] # module = manage_isc module = manage_dnsmasq
Необходимо открыть в правилах iptables доступ ко всем используемым портам 69, 80 и 25151 (XMLRPC-порт можно изменить в настройках файла settings). Если используется SELinux, необходимо также разрешить сетевой доступ к веб-серверу Apache и установить необходимый контекст:
# setsebool -P httpd_can_network_connect true # /usr/sbin/semanage fcontext -a -t public_content_t "/var/lib/tftpboot/.*" && /usr/sbin/semanage fcontext -a -t public_content_t "/var/www/cobbler/images/.*"
Хотя в некоторых случаях проще отключить SELinux. Например:
# nano /etc/selinux/config
И перезагрузить систему.
Разрешаем запуск tftp в конфигурационном файле xinetd, для чего в /etc/xinetd.d/tftp устанавливаем параметр disable в no:
# nano /etc/xinetd.d/tftp
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
Возможна аутентификация через веб-интерфейс несколькими способами: пароль, созданный утилитой htdigest (сохраняется в файле /etc/cobbler/users.digest), Kerberos, LDAP, Spacewalk/Satellite и тестовый (используется для отладки, всегда testing/testing). Но в настройках по умолчанию аутентификация через веб-интерфейс блокирована. Разрешим ее, для примера будем использовать digest-файл. Для чего в файле /etc/cobbler/modules.conf меняем значение параметра module в секции authentication:
[authentication] # module = authn_denyall # блокировка аутентификации module = authn_configfile
По умолчанию логин и пароль для регистрации – cobbler/cobbler. Его следует изменить при помощи команды:
# htdigest /etc/cobbler/users.digest "Cobbler" cobbler
Теперь – очередь шаблонов сервисов, которые находятся в каталоге /etc/cobbler в файлах с расширением .template. По своей структуре они соответствуют аналогичным файлам, в которых производятся настройки сервисов. Подробно структура некоторых из них описана в статье Андрея Маркелова [1]; кроме этого, шаблоны в файлах уже настроены (на сеть 192.168.1.0/24), и необходимо лишь уточнить текущие сетевые настройки – в частности, IP-адреса DNS-сервера, шлюза. Причем в файлах используются переменные, и в результирующих конфигурациях будут уже осуществлены подстановки из настроек текущей системы: например, /etc/cobbler/dhcp.template:
# nano /etc/cobbler/dhcp.template
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.1.100 192.168.1.200; filename "/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; next-server $next_server; }
Кстати, после внесения изменений в конфигурационные файлы и шаблоны нет необходимости перезапускать вручную демон Cobbler или другие сервисы, просто следует синхронизировать данные командой:
# cobbler sync
После чего будут последовательно остановлены все службы, заменены конфигурационные файлы шаблоном и произведен запуск. При работе через веб-интерфейс нажимаем ссылку SYNC.
После всех настроек запускаем сервисы:
# service xinetd restart # service cobblerd restart # service dhcpd restart # service httpd restart # service named restart
И обеспечиваем их автозапуск:
# chkconfig dhcpd on # chkcondig httpd on # chkconfig xinetd on # chkconfig named on # chkconfig cobblerd on
Теперь можно переходить по адресу http://127.0.0.1/cobbler/web, где после регистрации будет доступно меню редактирования параметров.
Рисунок 2. Просмотр настроек через веб-интерфейс
Подготавливаем систему к развертыванию
В веб-интерфейсе доступно 8 основных меню: DOCS, SETTING (вывод установок Cobbler), DISTROS, PROFILES (профили установки, в том числе и на виртуальные машины), SYSTEMS (системы), REPOS (репозитарии), IMAGES и KICKSTARTS. Принцип настроек при помощи графического меню достаточно прост. Для добавления выбираем нужный пункт, в нем ADD и заполняем предложенные поля. Другие подпункты позволяют вывести список и произвести поиск по заданным критериям.
Работу в консоли разберем чуть подробнее.
Для импорта образа системы вставляем CD/DVD-диск в привод или монтируем ISO в один из каталогов. Затем используем ключ import:
# mount -t auto -o loop ./CentOS-5.4-x86_64-bin.iso /media/iso # cobbler import --mirror=/media/iso --name=Centos5.4 --arch=x86_64
Процесс импорта образа выводится в консоль, по окончании будут выполнены еще три шага: добавление дистрибутива, в процессе которого создаются профили (например, в CentOS их три – обычный, XEN и Rescue), создание ассоциации с репозитарием и kickstart-файлом. Кроме этого, существует еще рад дополнительных параметров. Все они описаны в man cobbler. Например, --breed указывает на происхождение дистрибутива; различают redhat, debian, ubuntu и suse. Кстати, понятие «дистрибутив» (distro) в Cobbler чуть отличается от общепринятого. В терминологии Cobbler distro это набор файлов для загрузки – ядро и initrd (обязательные), плюс – kickstart-файл, набор дополнительных параметров ядра и другие. Кроме импорта из образа distro можно создать отдельной командой:
cobbler distro add --name=string --kernel=path --initrd=path [--kopts=string] [--ksmeta=string] [--arch=x86|x86_64|ia64] [--breed=redhat|debian|suse]
Параметры, в общем, понятны, за исключением kopts, при помощи которого указываются параметры ядра и ksmeta, позволяющего дополнять или подменять установки в kickstart-файле специфическими для данного distro.
Рисунок 3. Меню добавления Distro
После добавления дистрибутива он будет показан в веб-консоли или в списке команды cobbler:
# cobbler list
distro Centos5.4-x86_64 profile Centos5.4-x86_64 profile rescue-Centos5.4-x86_64 distro Centos5.4-xen-x86_64 profile Centos5.4-xen-x86_64 |
Если в списке дистрибутива нет, то нужно просто выполнить команду cobbler sync. Профиль представляет собой файл с описанием всех параметров, используемых при установке системы. Полный их список можно просмотреть при помощи ключа report или в веб-консоли.
# cobbler profile list # cobbler profile report --name=Centos5.4-x86_64
Профили можно копировать, создавая другие установки на основе имеющихся:
# cobbler profile copy --name=Centos5.4-x86_64 --newname=web-server
Теперь достаточно указать отличия для нового профиля – например, свой kickstart-файл:
# cobbler profile edit --name=web-server --kickstart=/var/lib/cobbler/kickstarts/web-server.ks
Чтобы была возможность установить из kickstart-файла пакеты, которых нет в основном репозитарии, следует указать дополнительные репозитарии, которые затем используются в профилях.
Рисунок 4. Список Kickstart-шаблонов
Получим список известных репозитариев:
# cobbler repo list
Здесь обнаружится один неприятный момент. Даже если бы мы использовали при импорте образа DVD, все пакеты, которые на нем имеются, будут доступны лишь при установке дистрибутива. Но они не могут служить сетевым репозитарием – впрочем, не всегда это необходимо, так как в большинстве случаев используются более свежие файлы, полученные с внешнего репозитария. Добавить новый репозитарий в список Cobbler просто:
# cobbler repo add --name=Centos5-RPMFORGE --mirror= http://fr2.rpmfind.net/linux/dag/redhat/el5/en/x86_64/rpmforge/ --priority=40 --createrepo-flags="-c cache" --arch= x86_64
Обновление большого количества систем лучше производить из локальной копии. Создадим ее:
# cobbler sync # cobbler reposync
Подобные команды необходимо запускать перед каждой установкой или обновлением систем. Если подобные операции производятся часто, то команду cobbler reposync можно поручить cron. Учитывая размеры репозитариев, выполнение последней команды займет время, файлы будут помещены в нашем случае в /var/www/cobbler/repo_mirror/Centos5-RPMFORGE. Собственно, все связанные файлы сохраняются в подкаталоги в /var/www/cobbler, поэтому этот раздел должен иметь достаточно места. Теперь подключим файлы с DVD, создав еще один репозитарий:
cobbler repo add --name=centos5.4-x86_64-DVD-base --mirror=http://192.168.17.209/cobbler/ks_mirror/CentOS5.4- x86_64/ --keep-updated=N # отключаем обновление --mirror-locally=0 --arch= x86_64
Список репозитариев указывается в профиле при помощи параметра:
--repos="centos5.4-x86_64-DVD-base Centos5-RPMFORGE "
Причем если в 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 с указанием конкретного профиля, в этом случае установка производится автоматически:
# cobbler system add --name=web01 --profile=web-server --mac=00:01:02:03:04:05
Кроме прочего, при добавлении системы в каталоге /tftpboot/pxelinux.cfg/ будет создан специальный конфигурационный файл (имя соответствует МАС-адресу). Остальные системы будут «довольствоваться» файлом default.
Если DHCP-сервер управляется Cobbler, то можно указать еще и параметр --ip= и --hostname=. После синхронизации настроек с помощью команды cobbler sync сервис DHCP будет готов выдать нужному клиенту его IP-адрес. Проверяем:
# cobbler system list # cobbler system report
В случае, когда администратор, который управляет процессом развертывания, не может использовать PXE-загрузку, система не имеет данной функции, недоступны настройки ВРСЗ и так далее, есть возможность создания ISO-образа, который затем можно использовать для загрузки систем. Для этого используем ключ buildiso. Например, чтобы создать ISO-образ, содержащий все ядра и initrd-файлы, известные Cobbler с соответствующим меню, используем:
# cobbler buildiso
Такой диск (небольшого размера) можно использовать лишь для загрузки, в последующем все данные для установки будут получаться с сервера Cobbler. Если выбираемых вариантов много, можно создать образ, содержащий профили только выбранных отдельных систем:
# cobbler buildiso --systems="web01"
Кроме этого утилита cobbler позволяет создать диск, который содержит все необходимые файлы и пакеты:
# cobbler buildiso --distro=Centos5.4-x86_64 --standalone
Рисунок 5. Загрузочное меню Cobbler
***
Собственно, это основное, что хотелось бы рассказать о Cobbler – достаточно простом в настройке решении, существенно упрощающем развертывание большого числа Linux-систем.
- Маркелов А. Создаем сервер сетевой установки Fedora/RHEL. //Системный администратор, №11, 2008 г. – C. 34-36.
- Сайт проекта Сobbler – https://fedorahosted.org/cobbler.
- Сайт проекта Ultimate Deployment Appliance – http://www.ultimatedeployment.org.
- Сайт проекта Quattor – http://sourceforge.net/projects/quattor.
- Сайт проекта FAI – http://www.informatik.uni-koeln.de/fai.
- Сайт проекта Spacewalk – http://www.redhat.com/spacewalk.
- Сайт проекта Symbolic – http://www.opensymbolic.org.
- Яремчук С. Централизованная настройка UNIX-систем с помощью Puppet. //Системный администратор, №7, 2007 г. – C. 58-61.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|