The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Автоматизация инсталляции и масштабное развертывание RHEL (linux redhat fedora centos pxe boot install diskless kickstart)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: linux, redhat, fedora, centos, pxe, boot, install, diskless, kickstart,  (найти похожие документы)
From: Lynz <http://red-hat-moscow-times.blogspot.com>; Date: Mon, 14 Jan 2007 14:31:37 +0000 (UTC) Subject: Автоматизация инсталляции и масштабное развертывание RHEL Оригинал: http://red-hat-moscow-times.blogspot.com/2007/08/rhel.html http://red-hat-moscow-times.blogspot.com/2007/07/rhel.html Построение инфраструктуры для масштабного развертывания RHEL Какой самый интуитивный и простой способ установить операционную систему на компьютер? Разумеется взять DVD-диск, вставить его, ответить на несколько вопросов, после чего подождать порядка получаса, и приступить к конфигурации системы. Это хорошо, когда вся ваша инфраструктура представляет из себя один-два сервера. При большем количестве систем или в ситуации, когда типовую установку ОС приходится выполнять достаточно часто, такой подход становится неудобным. Ниже мы приводим сценарий подготовки развертывания Red Hat Enterprise Linux по сети. Все примеры будут приводиться для установки Red Hat Enterprise Linux 5. Операционная система сервера - RHEL4/5. PXE-загрузка Данный этап является наиболее сложным и плохо документированным. А между тем грамотная настройка PXE-окружения является наиболее важным компонентом работающей инфраструктуры развертывания. Необходимые компоненты: 1. DHCP сервер. 2. TFTP сервер. 3. Созданные нами файлы и настройки. Итак, по-порядку. TFTP-сервер. Сначала настроим TFTP-сервер. (TFTP - Trivial File Transfer Protocol, простой протокол передачи файлов, работающий через UDP.) 1. Убедитесь, что в системе, которая будет TFTP-сервером, установлены пакеты tftp-server и xinetd. Проверяется это так: $ rpm -qi tftp-server $ rpm -qi xinetd Если вы получили информацию по этим пакетам, то они у вас установлены. В противном случае их необходимо установить. # yum -y install xinetd tftp-server (RHEL5) # up2date install xinetd tftp-server (RHEL4) 2. Разрешите в конфигурации xinetd запуск tftp в качестве сервиса по требованию. Для этого откройте файл /etc/xinet.d/tftp И исправьте там строчку disable = yes на disable = no 3. В конфигурации по умолчанию корневой директорией для tftp-сервера является директория /tftpboot/ Туда нам необходимо перенести файлы, необходимые для начала инсталляции. Установите пакет syslinux и перенесите PXE-загрузчик в директорию /tftpboot/ # yum install syslinux # cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ 4. Далее нам необходимо поместить в /tftpboot/ ядро и initrd для системы, которую мы желаем устанавливать по сети. Обычно такая возможность предусмотрена и нужные файлы есть на образах инсталляционных дисков. Итак, смонтируйте образ диска: # mount -o loop /[путь к директории с образами]/rhel-5-server-i386-disc1.iso /mnt # cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/ 5. Осталось сделать конфигурацию для загрузчика. Отредактируйте файл /tftpboot/pxelinux.cfg/default Содержимое этого файла для рассматриваемого случая будет следующим: default linux prompt 1 timeout 100 label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=9216 Для тех, кто сталкивался с конфигурированием lilo, конфигурация, должно быть, выглядит знакомо. Для тех, кто не имел подобного опыта, краткое описание: default- метка записи, загружаемой по умолчанию prompt - надо ли давать возможность выбора timeout - время, после которого default запись будет загружена label - метка, название конфигурации. Может быть произвольной. kernel - путь к файлу ядра. Путь задается относительно директории /tftpboot/ append - различные опции, передаваемые ядру, в том числе и файл initrd 6. На этом базовая конфигурация TFTP-сервера закончилась. Запустите сервис xinetd и (опционально) добавьте его в автозагрузку. # service xinetd start # chkconfig xinetd on DHCP-сервер DHCP-сервер нужен для того чтобы при PXE загрузке сообщить новой системе параметры сети и передать информацию, необходимую для сетевой установки. Желательно, чтобы DHCP-сервер и TFTP-сервер находились в пределах одной сети. Если у вас уже есть работающий вариант DHCP-сервера, то вам достаточно просто добавить несколько опция для нужных IP-адресов. Ниже приведем простейшую конфигурацию с комментариями ddns-update-style interim; ignore client-updates; subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.0.2; option time-offset 10800; # GMT+3 range dynamic-bootp 192.168.0.4 192.168.2.254; default-lease-time 21600; max-lease-time 43200; next-server 192.168.0.2; filename "pxelinux.0"; } Итак, по порядку. Опции routers, subnet-mask, domain-name, domain-name-servers аналогичны сетевым настройкам Default Gateway, Network Mask, DNS Domain name и DNS Servers. Адаптируйте их в соответствии со своими параметрами. Опция time-offset - разница во времени с Гринвичем в секундах. range dynamic-bootp - диапазон выдаваемых адресов, default-lease-time и max-lease time - времена в секундах аренды адреса по умолчанию и максимальное время аренды соответственно. Наиболее интересующие нас параметры: next-server - IP-адрес TFTP-сервера filename - путь к файлу PXE-загрузчика (относительно каталога /tftpboot/) На данном этапе ваши компьютеры должны уже "уметь" загружаться по сети и запускать инсталлятор. Для полного процесса установки нам не хватает только дистрибутива, доступного в сети. Установочный репозитарий В процессе установки установочный репозитарий необходим для того, чтобы предоставить инсталляторам, которые могут работать параллельно, доступ к дистрибутиву и избавить пользователя от необходимости создания нескольких копий (например записывать диски). Репозитарий можно располагать на FTP, HTTP и NFS серверах. Мы рассмотрим одну из этих конфигураций, остальные выполняются аналогично. FTP-сервер Конфигурация проста. Пример ниже приведен для установки RHEL5. Если у вас другая версия - обратитесь к документации по дистрибутиву. Предполагается что у вас есть 5 образов, скачанных c RHN. Для некоторых версий и архитектур количество может отличаться. 1. Создайте директории для монтирования этих образов. # for i in $(seq 1 5); do mkdir -p /var/ftp/rhel5-server-x68/disk${i}; done 2. Смонтируйте образы в созданные директории. Обратите внимание, что из-за внутренних ограничений ядра Linux число одновременно смонтированных образов не может превышать 8. Таким образом, если вы хотите обеспечить окружения для инсталляции более чем одной версии, лучшим выбором будет скопировать содержимое образов в эти директории. В нашем случае монтирование быстрее и не требует дополнительного дискового пространства. # for i in $(seq 1 5); do \ mount -o loop [путь к директории с образами]/rhel-5-server-i386-disc${i}.iso \ /var/ftp/rhel5-server-x68/disk${i}; done 3. Проверьте, что у вас включен анонимный ftp и корневой директорией для vsftpd является /var/ftp (В RHEL это настроено по умолчанию). Запустите сервис FTP и (опционально) добавьте его в автозагрузку. # service vsftpd start # chkconfig vsftp on 4. Проверьте доступность ресурса, напрмимер с помощью браузера по URL ftp://&#091;ваш FTP-сервер]/rhel5-server-x86/disk1 Вы должны увидеть содержимое инсталляционного образа CD #1. Если этого не произошло, проверьте выполнение предыдущих пунктов еще раз. Конец На данном этапе ваша система готова к интерактивной сетевой инсталляции. Вы уже можете загрузиться по сети и провести инсталляцию без жонглирования дисками. :) Единственное, что не вошло в данный обзор - сценарии kickstart, позволяющие проводить установку и настройку систем в любой заданной конфигурации полностью неинтерактивно. Об этом мы тоже обязательно расскажем, но это - совсем другая история.
Автоматизация развертывания RHEL. Неинтерактивная инсталляция. Раньше мы описали инфраструктуру для развертывания RHEL в условиях масштабной инфраструктуры. И хотя наша инфраструктура позволяла устанавливать RHEL сразу на произвольном количестве компьютеров, ей чего-то не хватало. Не хватало возможности неинтерактивной инсталляции. Такая технология давно существует в стенах Red Hat и имя ей KickStart. Сегодня мы рассмотрим эту технологию и ее применений на примере сетевой инсталляции RHEL5. Операционная система сервера в примере - RHEL4, но может быть произвольной. Итак, создаем kickstart-файл. Что такое kickstart-файл? Kickstart-файл - это сценарий установки. "У меня все ходы записаны". То есть сценарий установки подразумевает заранее записанные в определенном формате ответы на вопросы инсталлятора. Добавьте возможность выполнять собственные скрипты до и после установки и вы получите более-менее полное представление о возможностях kickstart. Приведем простой пример ks-файла 1. install 2. url --url [10]ftp://192.168.0.2/redhat/disk1 3. key [installation number] 4. lang en_US.UTF-8 5. keyboard us 6. xconfig --startxonboot --defaultdesktop kde --resolution 1400x1050 --depth 32 7. network --device eth0 --bootproto dhcp --onboot=on 8. rootpw --iscrypted $1$vFt/3HTE$N16kauXMVOmNHurppHAo0/ 9. firewall --disabled 10. authconfig --useshadow --enablemd5 11. selinux --disabled 12. timezone --utc Europe/Moscow 13. bootloader --location=mbr --driveorder=sda --append="rhgb quiet" 14. # 15. clearpart --all --initlabel 16. part /boot --fstype ext3 --size=100 --asprimary 17. part pv.100001 --size=20000 --asprimary 18. part pv.100000 --size=20000 --asprimary 19. part pv.100002 --size=1 --grow --asprimary 20. volgroup sysvg --pesize=32768 pv.100000 pv.100001 pv.100002 21. logvol swap --fstype swap --name=swap --vgname=sysvg --size=2000 22. logvol /home --fstype ext3 --name=home --vgname=sysvg --size=1 --grow 23. logvol / --fstype ext3 --name=root --vgname=sysvg -size=20000 24. firstboot --disable 25. reboot 26. # 27. %packages 28. @admin-tools 29. @base 30. @core 31. @system-tools 32. @text-internet 33. @web-server 34. # 35. %post 36. #!/bin/bash 37. useradd -m -s /bin/bash -G wheel vpupkin А теперь разберем его. Для удобства строки пронумерованы и я буду просто ссылаться на номера. В строчках [1-3] мы определяем, что это будет чистая инсталляция (не обновление) , местоположение дистрибутива (если быть точным - первого диска дистрибутива) и задаем инсталляционный номер. Далее [4-5] мы указываем язык системы и тип клавиатуры. Нотация стандартная, то есть чтобы установить русский язык системы надо исправить en_US.UTF-8 на ru_RU.UTF-8. В [6] мы конфигурируем X.org сервер, задавая рабочий стол по умолчанию (KDE), разрешение и глубину цвета, а также определяем, что X.org должен стартовать при загрузке. В [7] находится простая сетевая конфигурация, определяющая, что у нас единственная сетевая карта, которая использует DHCP для получения сетевых настроек. Это рекомендованный вариант, так как в случае, если вы устанавливаете много систем с одного kickstart-файла, вы не можете использовать одни и те же сетевые настройки. Кроме того, DHCP-сервер в любом случае является необходимым для сетевой инсталляции. В [8] мы устанавливаем административный пароль (он заранее зашифрован). В [9] и [11] мы отключаем брандмауэр и мандатный контроль доступа соответственно (не будем забывать, что мы рассматриваем простой пример). В [10] мы конфигурируем стандартную аутентификацию через /etc/passwd и /etc/shadow с шифрованными паролями. В этой строке возможно заранее сконфигурировать аутентификацию с использованием Kerberos, LDAP, NIS, или Windows-домена. В [12] мы задаем временную зону, а в [13] задаем положение загрузчика, опции передаваемые ядру и, если у вас более одного жесткого диска - порядок следования их в BIOS системы. Строки [13-21] задают разметку диска. В нашем случае создается одна 100Мб ext3-партиция /boot для ядра, initrd и загрузчика, остальное место размечается на 3 партиции, поверх которых располагается LVM, на котором выделяется 20Гб том под основную систему (/), 2Гб под место для подкачки, а остальное место монтируется как /home для данных пользователей. Строки [24-25] отключают агент настройки системы при первой загрузке и указывают, что системы должна перезагрузиться после установки. Строки [27-31], как это видно, находятся в области %packages, и определяют пакеты и группы пакетов, которые должны быть установлены. Синтаксис простой: имя пакета, чтобы установить один пакет (например dhcp) и @имя_группы, чтобы установить определенную группу пакетов. Оставшиеся строки (секция %post) - постинсталляционный скрипт. В нашем случае он просто добавляет пользователя vpupkin. Вообще говоря, это может быть произвольный скрипт, который обновляет систему, скачивает и устанавливает конфигурацию или выполняет прочие произвольные действия. Использование ks-файла Теперь наш kickstart-файл готов к использованию. Осталось разместить его на сервере и передавать параметром при установке. Я предполагаю, что у вас сетевые службы настроены в соответствии с описанием в предыдущем выпуске рассылки. Сохраните ваш kickstart-файл куда-нибудь на сервер. Я разместил его в /var/ftp/rhel-ks.cfg и, соответственно, он стал доступен по сети по адресу [11]ftp://192.168.0.2/rhel-ks.cfg. Осталось "сообщить" об этом примечательном факте загружающимся по PXE системам. Для этого изменим файл '/tftpboot/prelinux.cfg/default' так, чтобы он содержал следующую информацию: label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=9216 noapic acpi=offo ks=ftp://192.168.0.2/ks.cfg На этом конфигурация заканчивается. Если вам необходимо установить 1000 типовых рабочих станций за день - это не более трудная задача, чем нажать кнопку "Power" на 1000 компьютерах. Удобности и вкусности. Естественно, механизм kickstart чрезвычайно удобен для проведения типовых инсталляций. Однако писать сценарий установки не всегда удобно вручную. Для этого существует инструмент system-config-kickstart (входит в поставку RHEL), который в окошке, похожем на этапы инсталляции позволит сформировать костяк конфигурационного файла. Фактически ручного редактирования требует только секция разметки диска и постинсталляционные действия. Инструментарий kickstart очень удобно интегрирован в RHN. Вы можете сгенерировать сценарий по установленной ранее системе, а также пользоваться каналами конфигурации для приведения типовых систем в боевую готовность непосредственно от состояния "голое железо" (Bare HW). Полную информацию о синтаксисе kickstart-файлов вы можете почерпнуть по адресу http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Installation

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1, abudda (??), 19:39, 05/08/2008 [ответить]    [к модератору]
  • +/
    вопрос такой, как зашитится, если в той же подсети кто-то поставит еще один dhcp сервер?
     
     
  • 2, Andrey Mitrofanov (?), 20:13, 05/08/2008 [^] [ответить]    [к модератору]
  • +/
    >вопрос такой, как зашитится, если в той же подсети кто-то поставит еще один dhcp сервер?

    "Предупреждение, штраф, увольнение, посадка, расстрел супостата."(тм)
    http://www.opennet.ru/openforum/vsluhforumID10/3681.html#4

    Некоторые думают, что "умные" свичи, vpn-ы, ядрёные заклининия на витой паре могут помочь...

     
  • 3, ssh (??), 19:28, 16/04/2012 [ответить]    [к модератору]
  • +/
    Установка Fedora 16 по сети с windows машины

    http://alexprays.blogspot.com/2012/04/blog-post_16.html

     
  • 4, alp (?), 16:28, 09/09/2013 [ответить]    [к модератору]
  • +/
    Архив с программой Tftp32 настроенной для установки Fedora 19 linux из интернет (pxe)
    http://letitbit.net/download/12900.14788252876051599722cb18c75f/pxeinstall.zi

    Статья по установки
    http://alexprays.blogspot.ru/2012/04/blog-post_16.html

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:




      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor