Журнал LinuxFormat - перейти на главную

LXF145:Установка

Материал из Linuxformat
Перейти к: навигация, поиск

Админу сервера: Быстрый запуск

В первой части нашей новой серии уроков Стюарт Бернс демонстрирует, как сэкономить время и усилия, создав базовую стартовую установку.
Наш эксперт

Стюарт Бернс – британский администратор Linux в компании Fortune 500; его конек – сборка и поддержка крупномасштабных виртуализованных инфраструктур Linux.

Установить дистрибутив Linux с CD-ROM легко. Но если вы начнете устанавливать десятки и сотни систем, то уже сложнее гарантировать согласованность, и сборка всех машин вручную менее осуществима – она отнимет слишком долгое время. И потом, есть еще настройки, которые нужно внести. Чуточка планирования и автоматизации позволит вам быстро создавать однотипные установки снова и снова.

В данной серии уроков я надеюсь наметить основные сборочные блоки автоматизации быстрого развертывания [kickstart – букв. «вбрасывание пинком»], и вы сможете создавать системы по требованию за несколько простых шагов.

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

Для экспериментов с автоматическим развертыванием, в любом значимом смысле, вам потребуется web-сервер – и для конфигурации, и для файлов установки. Мы возьмем CentOS 5, поскольку для наших целей он идентичен Red Hat, но бесплатен.

Давайте построим базовый web-сервер и заготовим базовую автоматизированную установку. Соберите/получите оборудование для web-сервера, виртуальное или нет, если вам нужно скачать его с http://www.centos.org. По возможности берите DVD-версию, так как она уложила все необходимое на единственном диске. DVD доступен в основном через скачивание посредством BitTorrent, так что воспользуйтесь клиентом BitTorrent.

Мы создадим конфигурацию минимального web-сервера и на нем будем основывать наш скрипт.

Вставьте ваш носитель с CentOS в привод CD-ROM (реальный или виртуальный) и запустите установку Centos, выбирая правильные опции вашего географического положения, уникальные пароли и прочее. Если вы используете скачанный диск впервые, стоит позволить серверу выполнить тест носителя и убедиться, что ваша копия – не брак.

Устранение неполадок

Если ваше быстрое развертывание не сработало, попробуйте следующее – это подскажет, где искать:

  • Все ли кабели на месте, идет ли пинг на web-сервер?
  • На месте ли Apache, работает ли он (можно ли попасть в него)?
  • Можете ли вы перейти и просмотреть kickstart, щелкнув по нему на web-сервере?
  • Изменили ли вы kickstart, чтобы гарантировать его загрузку и использование DHCP в качестве адреса?
  • Могут ли другие машины получить DHCP-адреса?

В конце концов вы доберетесь до разметки диска. Советую выбрать «Remove all disk partitions on selected drives and create a default layout [Удалить все разделы на выбранных дисках и создать разбиение по умолчанию]». При нажатии Next вас предупредят, что все данные будут стерты. Если вы согласны, жмите OK.

Когда дело дойдет до разметки дисков, в нашей демонстрации установите размер диска на 10 – 15 ГБ (полагаем, что все папки находятся на одном разделе), так как потом мы скопируем все содержимое установочного диска CentOS на web-сервер, расположенный в /var.

Единственное изменение, которое следует сделать – использовать статический IP-адрес для нашего web-сервера. Запишите используемый IP-адрес; позднее он пригодится.

На стадии выбора пакетов я предлагаю взять те, что выписаны ниже. Чтобы выбрать отдельные пакеты, выберите переключатель «Customise now», и это даст вам больше контроля над пакетами.

  • Рабочий стол (Gnome)
  • Сервер Web-сервер
  • Приложения (только Редакторы)

Когда при установке настанет черед брандмауэра, убедитесь, что http разрешен через порт 80. Наконец, понадобится установить автозапуск httpd (web-сервер Apache), что сэкономит несколько минут при поиске неполадок на линии. Проделайте это, вызвав следующую команду в терминале от имени root – вызвать нужно только один раз, по завершении установки и перезагрузки сервера:

chkconfig --level 35 httpd on

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

service httpd start

Выполнив этот шаг, скопируйте содержимое установочного DVD в корневую папку web-сервера (/var/www/html/), поскольку мы собираемся использовать его для установки на базе web. Это можно проделать либо через GUI, либо по ssh, на ваш вкус. Для проверки, что все работает, просто возьмите другой компьютер и перейдите по адресу web-сервера. Вы должны увидеть каталог, где отображено содержимое, включая файлы с носителя, которые мы только что скопировали.

А теперь пойдут хитрости. При установке системы на базе Red Hat, Anaconda, инсталлятор Red Hat, сохраняет копию конфигурационного файла создаваемой установки в файл /root/ks-anaconda.cfg. И этим файлом можно воспользоваться для создания идентичной системы.

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

Скорая помощь

HTTP – не единственный способ установки. Можно также использовать NFS и FTP. При желании можно даже собрать индивидуальный DVD. Для их использования поменяйте параметр --url на NFS или FTP.

По требованию

Создайте папку в корне web-сервера (/var/www/html) под названием kickstarts. Здесь мы будем хранить варианты конфигураций, чтобы по запросу выбирать какой-либо из них для быстрого создания машин.

Скопируйте /root/anaconda-ks.cfg в свежесозданную папку kickstart. Поменяйте его название на более подходящее – например, base.cfg: ведь наши установки будут базироваться на этой главной конфигурации.

Большим плюсом этого способа является возможность припасти несколько различных конфигураций – скажем, web-сервер, dns-сервер и сервер баз данных. После этого уже просто останется загрузиться с CD и применить желаемый файл kickstart config, если экземпляр этой конфигурации уже создан.

Сделайте копию нового base.cfg, смените ее имя на webserver.cfg или любое другое имя, более осмысленное для вас – только без пробелов, ведь они только усложняют дело.

Задайте файлу такие права доступа, чтобы его мог читать web-сервер, командой

chmod 744 webserver.cfg

В нашем файле webserver.cfg нужно подправить некоторые параметры, чтобы мы могли выполнить web-установку. Откройте файл в вашем любимом редакторе, там мы поменяем установочный метод и значение IP.

По умолчанию все строки про разбивку диска Anaconda превращает в комментарии, в целях безопасности. Следовательно, нам нужно раскомментировать группы disk и volume и создание логического тома. Строки-комментарии начинаются со знака #.

Вы увидите строки, которые нужно раскомментировать (они начинаются с clearpart, а заканчиваются на last logvol line). Предупреждаем, что при такой конфигурации все имеющиеся диски будут затерты.

Также нужно менять IP-адрес новых серверов, поскольку нам ни к чему дублирование IP-адресов в нашей сети. Для этого обяжите конфигурацию получить во время установки DHCP-адрес. Найдите строки, начало которых похоже на следующее (ваш IP-адрес, и прочее, может отличаться, но вид строки вы узнаете):

network --device eth0 --bootproto static --ip 172.16.1.21 --netmask 255.255.255.0 --gateway 172.16.1.1 --nameserver 4.4.4.4,8.8.8.8

Замените это на

network --device eth0 --bootproto dhcp

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

Изменение метода установки делается вполне прямолинейно. Вторая строка файла, где прописано cdrom, и есть метод установки. Поскольку мы выполняем web-установку, сообщим об этом стартовой конфигурации, задав ей метод и url:

url --url http://url to web root/

Теперь методом установки будет http (web-установка).

Протестируем наш способ установки, собрав еще один сервер. Вставьте носитель с Red Hat в сервер, который мы хотим собрать, и загрузитесь. Попав в начальный текстовый экран выбора, измените на загрузку с файла kickstart. Это делается простым вводом команды (при необходимости замените имена файлов и папок):

linux ks=http://address of web server/kickstart/webserver.cfg

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

Машины, собранные с такое конфигурацией, должны загружаться и получать DHCP-адрес. Хорошим началом для более продвинутой конфигурации будет сборка системы с нужной нам спецификацией. Итак, базовое развертывание работает – давайте исследуем конфигурацию kickstart. Ее можно разделить на четыре основных раздела:

  • Предустановочный раздел (%pre)

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

  • Установочный раздел (install или upgrade)

Пункты, определяющие настройку системы, включая поясное время, пароли и конфигурацию дисков. Пароль может быть представлен в незашифрованном виде, если убрать --isencrypted, а после пароль открытым текстом. Это следует делать, конечно, только на время установки, а после установки сразу же менять пароль.

  • Выбор пакетов (%packages)

Здесь вы определяете, какие пакеты будут устанавливаться. Символ @ означает группы пакетов в том же стиле, что и группы пакетов rpm, а не отдельные пакеты. Отдельные строки означают отдельные пакеты, например, yum install rpmfilename.

Вы не можете просто скопировать пакеты в одну папку repo на сервере. При желании установить дополнительный нестандартный пакет проделайте это в разделе пост-установки. Так вы предотвратите засорение папки установщика и необходимость заново создавать метаданные, содержащие манифест пакетов.

Смачные команды

Безусловно стоит взять на вооружение yum: Yum предоставляет опции, упрощающие установку программ, и заботится о разрешении проблем в пакетах. Если вы собрались позабавиться пост-установкой RPM’ов, вот краткий перечень опций, способных вам пригодиться:

  • yum localinstall localfile Устанавливает файл с локального диска (необходимо задать путь и имя файла).
  • yum install rpmfile Устанавливает файл rpmfile из репозитория.
  • yum search “string” Возвращает все пакеты, соответствующие строке string
  • yum remove packagename Удаляет пакет. Применяйте с осторожностью.

Еще один полезный совет: имеет смысл принять во внимание, что по умолчанию ключ-подпись в базу данных не импортируется. Из-за этого при каждом запуске команд, связанных с yum и rpm, вас будут постоянно спрашивать, доверяете ли вы источнику. По умолчанию публичный ключ хранится в /etc/pki/rpm-gpg. Если его импортировать в базу данных, вопрос задаваться перестанет, поскольку ключ при этом добавляется в список доверенных ключей.

В других дистрибутивах

Средства автоматизированной установки системы, аналогичные kikstart, есть и в других популярных дистрибутивах. Все они работают одинаково. Необходимо каким-либо образом создать файл конфигурации и при загрузке установочной системы сослаться на него.

В openSUSE такой механизм называется AutoYaST. Он позволяет сохранить описание установленной системы для дальнейшего клонирования в формате xml или создать и редактировать такой файл с помощью одного из модулей YaST. При загрузке установочной системы достаточно в параметрах добавить autoyast=<URL файла xml>.

В Ubuntu программа установки может брать необходимые параметры из текстового preceed-файла. Более подробно об этом можно прочитать здесь: https://help.ubuntu.com/10.10/installation-guide/i386/appendix-preseed.html

Настройка пакетов

Отредактировав файл пакетов, можно настроить, чтобы пакеты устанавливались по время стандартной установки системы. Знак @ означает группу установки – например, группу пакетов по типу определяемой в yum install system. Отдельные пакеты можно установить путем простого добавления списка пакетов с новой строки.

  • Пост-установка (%post)

Пользуйтесь этим для настройки сервера путем установки и запуска скриптов, пакетов и установок. Например, мы установили запуск http при загрузке вручную, но это можно сделать автоматически, прописав в разделе %post

chkconfig --level 35 httpd on

Это гарантирует, что web-сервер в этой конфигурации будет запускаться автоматически.

Вот еще один несложный пример:

yum -y install updates

Все локальные файлы обновятся с использованием автоматически выбираемого репозитория, который поставляется как часть Centos. Выполнение этой команды в качестве пост-установки потребует времени, так как обновления могут занимать более 300 МБ после первичной установки с носителя.

Другие полезные вещи, которые можно проделать, включают добавление в систему пакетов (например, если вы хотите поставить на новой машине утилиты для гостевой виртуализации). Следовательно, в этом небольшом сценарии мы установим добавления Guest (они же – Guest virtualisation tools), к нашему набору виртуальных клиентов, базирующихся на VirtualBox.

Создайте папку в корневом разделе web-сервера и назовите ее postinstall. В папке postintall web-сервера создайте папки с именами packages и script. Очевидно, в первой будут содержаться бинарники пакетов, а во второй – скрипты установки для этих пакетов. Скрипты сделаем ясными и простыми – легче будет отлавливать ошибки.

Наводим мосты

В виртуальных окружениях вроде VirtualBox вам может понадобиться поменять тип сети с NAT на сеть с мостами, чтобы разрешить доступ к интернету и LAN.

Как следует из названия, сетевой мост работает как связь между двумя сетями и разрешает трафику течь между ними.

Без сетевого моста у вас могут возникнуть проблемы с сетевым соединением.

Чтобы проделать это в VirtualBox, перейдите к требуемому клиенту, а затем в Settings. Оттуда выберите Network, после чего Bridged, и затем укажите используемый сетевой интерфейс (обычно eth0).

При желании можно использовать в вашей сети NAT (что и задано по умолчанию), которая создаст новую внутреннюю сеть на новой виртуальной локальной сети.

Какой бы способ вы ни применяли, убедитесь, что главный web-сервер и дополнительные клиенты расположены в одном сегменте сети и имеют одинаковый тип сети.

Как правило, установка гостевых утилит для VirtualBox – это скрипт, который должен запуститься при монтировании его через виртуальный CD-ROM в вашем виртуальном госте (при этом лучше получается настройка установки, выделение, копирование графики, и т. д.). Можно проделать это для всех гостей, но тогда пострадает наша идея автоматизации установки. К счастью, делается это очень просто. В следующем фрагменте я буду полагать, что вся ваша установка основана на Virtualbox.

Войдите в GUI web-сервера как root (есть и другие способы, но для наших целей этот самый быстрый). В меню Virtualbox выберите Devices > Guest Additions. При этом примонтируется CD, содержащий данные, которые нужно скопировать содержимое CD-ROM (или просто VboxLinuxAdditions.run) в папку postinstall/packages.

Чтобы установить гостевые службы на нашем сервере, необходимо также скопировать по сети наши файлы, сделать файл установки исполняемым и установить заголовки пакетов gcc и kernel. Эти пакеты – условие успешной установки гостевого сервера. Все это можно завернуть в один душевный скрипт, который сделает за нас всю работу.

yum -nogpgcheck -y install gcc kernel-devel.i686
wget http://url to server/postinstall/packages/VBoxLinuxAdditions.run /tmp/
chmod 700 VboxLinuxAdditions.run
./VBoxLinuxAdditions.run

При запуске этот скрипт устанавливает в систему пакеты gcc (компилятор C) и пакеты разработчика ядра, чтобы собрать требуемые модули.

Ключ --nogpgcheck нужен, так как он велит yum не проверять цифровую подпись пакетов rpm. Пользуйтесь этим, только когда вы знаете, откуда взяты устанавливаемые пакеты, и осознавайте риск от игнорирования проверки цифровой подписи.

Опция -y довольно проста. Она велит системе установки yum считать, что на все запросы отвечают yes. Следовательно, она не станет спрашивать, хотите ли вы установить пакет, а просто устанавливает его. Без этой опции скрипту нужно будет интерактивное вмешательство.

Вторая строка просто копирует по сети файл, который мы хотим установить, и помещает его в каталог /tmp. В третьей строке устанавливается флажок запуска для владельца файла, что делает файл исполняемым. Затем, в четвертой строке, происходит сама установка гостевого ПО. Возможно, понадобится запустить это несколько раз вручную и убедиться, что все работает как полагается, а уж потом вписывать его в раздел %post. Раздел post не отображает раздел %post во время выполнения.

Сохраните этот скрипт в папке /postinstall/scripts под подходящим именем – я выбрал guest.sh. Этот пакет, при запуске его с только что собранного сервера, установит добавления для гостевой машины. Установка приложения выпоняется в три этапа. Во-первых, скопируйте по сети скрипт с сервера, во-вторых, сделайте его исполняемым, и, наконец, запустите его. Чтобы проделать это нашей замечательной пост-установкой, сделаем небольшой скрипт из трех строк:

wget http://url to web server/postinstall/scripts/guest.sh /tmp/
chmod +x guest.sh
./guest.sh

Как и предыдущий скрипт, он копирует по сети, делает исполняемым и запускает его, но мы заодно используем его как пример, что можно сделать. В принципе, мы могли бы поместить его прямо в скрипт %post; ну, а если вы понапишете скрипты из сотен строк – что делать тогда? Этот подход также предотвращает установку ненужных пакетов, и размещение в скриптах меньших размеров помогает содержать все в порядке.

В основном для этого упорядочивания мы создали папку /postinstall, а в ней папку scripts. Затем, используя стандартную утилиту wget, мы копируем файл virtclient.sh с сервера на только что созданную машину. После этого можно отмечать его как устанавливаемый пользователем root.

Теперь у нас есть копия приложения install – скопируем ее по сети в папку postinstall. Базовая установка готова к работе, и можно подумать о настройках.

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

Мы разобрались, из чего складывается быстрое развертывание; но есть и более эффективный способ изменять его файлы. Red Hat предоставляет GUI-программу, которая выполняет всю грязную работу через удобный интерфейс. Если вы любитель экспериментов, есть прекрасная программа, позволяющая создавать или обновлять kickstart config. Либо выберите ее из установки GUI-приложений, либо выполните от имени root в терминале следующую команду:

yum install system-config-kickstart

Я советовал бы установить эту программу на такой компьютер, где можно легко (посредством ssh или другими способами) копировать полученный kickstart в папку kickstart нашего web-сервера.

С помощью этого приложения можно добавлять и удалять пакеты, изменять такие критерии установки, как диски, группы томов, поясное время и любые другие опции в конфигурации kickstart, которые вы хотели бы настроить.

Персональные инструменты
купить
подписаться
Яндекс.Метрика