Упрощение процесса установки операционных систем позволяет
сократить затраты времени на администрирование систем в Cloud-среде.
Прочитав статью, вы узнаете, как автоматизировать установку ОС SUSE
Linux® на новый логический раздел (LPAR) системы IBM Power™ или System
p®. Аналогичный подход вы сможете использовать и для установки Red Hat
Linux или AIX.
Одной
из отличительных черт принципа Cloud Computing является возможность
переноса приложений с одной вычислительной системы в другую. При этом
предполагается, что на момент переноса приложения целевая операционная
система уже подготовлена. Неплохо было бы научиться автоматизировать
установку новой ОС.
Автоматизированная установка Linux для
архитектур на основе Intel™ хорошо отработана. Однако для систем System
p или IBM Power System, управляемых при помощи HMC (Hardware Management
Console) это сделать сложнее. Преимуществом предлагаемого в данной
статье решения является то, что оно целиком основано на средствах Linux
и не требует каких-либо знаний AIX.
Краткое описание решения
Перед
нами стояла задача автоматизировать процесс установки операционной
системы, используя простой в поддержке и модификации набор
конфигураций. Разработанное решение обладает следующими свойствами:
- Установленная
во вновь созданный LPAR-раздел система использует статический IP-адрес.
Это относится только к окончательной конфигурации, в процессе же
установки может применяться динамическая выдача адресов посредством
DHCP (Dynamic Host Configuration Protocol).
- Конфигурационный
XML-файл для программы YaST2, который управляет автоматической
установкой Linux (AutoYaST), достаточно универсален и может применяться
для развертывания разных серверов – HTTP, MySQL и др.
- В AutoYaST-файле не задается никакая конкретная информация, такая как IP-адреса, имена машин и т.д.
- Все автоматизировано таким образом, что для организации нового LPAR требуется запустить единственную команду HMC.
Создание и применение предлагаемого решения включает следующие этапы:
- Настройка файла AutoYaST
- Настройка серверов DHCP/BOOTP и TFTP
- Использование команды
lpar_netboot из HMC - Автоматизация команды
lpar_netboot при помощи параметра -g - Проведение автоматической установки для нового LPAR
Этап 1. Настройка файла AutoYaST
Для
управления процессом установки операционной системы в SUSE Linux
применяется файл AutoYaST.xml. По умолчанию AutoYaST при каждом вызове
создает идентичные друг другу установки. Как следствие можно иметь
несколько AutoYaST-файлов для различных конфигураций - например, один
AutoYaST-файл для Web-серверов и другой – для MySQL-серверов. Однако
настраивать и поддерживать отдельные AutoYaST-файлы для каждого
сервера, отличающегося только IP-адресом и именем, довольно трудоемко и
неудобно.
Для создания специального AutoYaST-файла,
который будет получать IP-адрес и имя машины с DHCP-сервера, создайте
копию стандартного AutoYaST-файла с установочного диска SUSE и измените
его так, как сказано далее:
- В
стандартном AutoYaST-файле прописано использование DHCP. Измените
разделы, отвечающие за сетевые настройки, так, чтобы DHCP применялся
только при начальной установке ОС. Проверьте, чтобы ни в одном таком
разделе не задавалось имя машины. Если такой раздел имеется, удалите
его целиком.
- Если где-либо в XML-файле содержится информация о статических IP-адресах, DNS и пр., удалите соответствующие разделы.
- Поместите
код из листинга 1 сразу перед самым последним XML-тегом в файле
AutoYaST. Этот скрипт отвечает за преобразование конфигурации,
предварительно полученной при помощи DHCP, в статические сетевые
настройки, которые вступят в силу при загрузке вновь установленного
LPAR.
Данный скрипт избавляет от необходимости иметь для каждого
LPAR отдельный файл AutoYaST с прописанным в нем IP-адресом. От вас
требуется лишь правильно настроить DHCP-сервер.
Листинг 1. AutoYaST-скрипт для преобразования DHCP
<scripts> <init-scripts config:type="list"> <listentry> <filename>network_setup</filename> <interpreter>shell</interpreter> <source><![CDATA[#!/bin/bash ### Отключаем ipv6 echo 'install ipv6 /bin/true' >> /etc/modprobe.conf.local
### Переменные, на основе которых формируются настройки для статической ### сетевой конфигурации ACTIVE_INTERFACE=`/sbin/ifconfig | grep eth | awk '{print $1}'` IP_ADDRESS=`/sbin/ifconfig $ACTIVE_INTERFACE | grep 'inet addr' | awk '{print $2}' | sed 's/addr://'` NETMASK=`/sbin/ifconfig $ACTIVE_INTERFACE | grep 'inet addr' | awk '{print $4}' | sed 's/Mask://'` BROADCAST=`/sbin/ifconfig $ACTIVE_INTERFACE | grep Bcast: | awk '{ print $3 }' | sed 's/Bcast://'` NETWORK=`/sbin/ip route list | grep $IP_ADDRESS | awk '{ print $1 }' | sed 's/\/[1-9][1-9]//'` GATEWAY=`/sbin/route | grep default | awk '{print $2}'` HOSTNAME=`/usr/bin/host $IP_ADDRESS | awk '{print $5}' | sed '$s/.$//'`
### Записываем HOSTNAME echo "$HOSTNAME" > /etc/HOSTNAME
### Записываем адрес шлюза echo "default $GATEWAY - -" > /etc/sysconfig/network/routes
### Записываем нужные данные в файл /etc/hosts HOST=`/usr/bin/host $IP_ADDRESS | awk '{print $5}' | sed '$s/.$//' | cut -d "." -f 1` echo "$IP_ADDRESS $HOSTNAME $HOST" >> /etc/hosts
### Создаем заново файл, содержащий статическую сетевую конфигурацию
INT_CONF_FILE=/etc/sysconfig/network/ifcfg-eth-id-`ifconfig eth0 | grep HWaddr | awk '{ print $5 }' | perl -ne '$var=$_; print lc($var)'`
echo 'DEVICE=eth0' > $INT_CONF_FILE echo 'BOOTPROTO=static' >> $INT_CONF_FILE echo "IPADDR=$IP_ADDRESS" >> $INT_CONF_FILE echo "NETMASK=$NETMASK" >> $INT_CONF_FILE echo "BROADCAST=$BROADCAST" >> $INT_CONF_FILE echo "NETWORK=$NETWORK" >> $INT_CONF_FILE echo 'STARTMODE=onboot' >> $INT_CONF_FILE echo 'TYPE=Ethernet' >> $INT_CONF_FILE
### Перезапускаем сетевую подсистему /etc/init.d/network restart ]]></source> </listentry> </init-scripts> </scripts>
|
Этап 2. Настройка служб DHCP/BOOTP и TFTP
В
нашем решении используется штатная служба DHCP, входящая в состав всех
популярных дистрибутивов Linux. На этом этапе мы настраиваем
DHCP-сервер таким образом, чтобы обеспечить загрузку по сети будущих
LPAR-разделов.
DHCP-сервер, используемый в нашем
решении, не будет раздавать динамические IP-адреса. Однако он может
сосуществовать в одной сети с другими DHCP-серверами, которые этим
занимаются. Наша конфигурация позволяет осуществлять даже сетевую
загрузку машин, находящихся в подсети, отличной от подсети
DHCP-сервера. Например, вы сможете загружать машины в Нью-Йорке,
используя DHCP-сервер из Техаса.
Для каждого загружаемого LPAR в настройках DHCP-сервера должна существовать отдельная запись. Это требуется для работы команды lpar_netboot , которая рассматривается на этапе 3.
Вся необходимая информация для автоматически устанавливаемых LPAR будет
собрана в единственном файле – dhcpd.conf, что весьма удобно. Таким
образом, нет нужды жестко задавать какие-либо сетевые настройки в файле
AutoYaST, который мы создали на предыдущем этапе.
В
листинге 2 приведен шаблон файла dhcpd.conf, на основе которого вы
можете описать свою конфигурацию, добавляя на каждый LPAR по записи
типа host . В разделе Загрузка
данной статьи имеется zip-архив, содержащий скрипт под названием
addsystem, который автоматизирует добавление сведений в файл dhcpd.conf.
После редактирования файла dhcpd.conf для вступления изменений в силу необходимо перезапустить службу DHCP.
Листинг 2. Шаблон файла dhcpd.conf
ddns-update-style ad-hoc; allow bootp; subnet 0.0.0.0 netmask 0.0.0.0 { host rcc-hny-poc-003 { option host-name "myserver.cloud9.ibm.com"; fixed-address 192.168.0.203; hardware ethernet 16:E9:10:94:87:03; filename "inst64"; } next-server 192.168.0.201; option routers 192.168.0.201; } |
Ниже описан смысл опций, используемых в приведенном файле dhcpd.conf:
- Опция
subnet
с указанными параметрами определяет, что сервер будет отвечать на
запросы независимо от того, из какой сети поступает запрос. Поскольку
наш сервер не настроен на обслуживание запросов динамических адресов,
его работа по обработке запросов от загружающихся LPAR не нарушит
работу существующих DHCP-серверов. - Опция
host описывает каждый LPAR, который подлежит установке. Задайте столько опций host , сколько требуется. В примере приведен минимальный набор опций внутри host , которые необходимы для установки LPAR и последующей работы LPAR в качестве DHCP-клиента: host-name
содержит имя, соответствующее IP-адресу машины на DNS-сервере. Если
машина не имеет DNS-имени, укажите здесь то имя, которое вы хотите
иметь в локальном файле hosts вновь установленной ОС. fixed-address
содержит IP-адрес, назначаемый LPAR-разделу. Если он указан, то
DHCP-сервер использует именно его и не задействует пул адресов по
умолчанию. Это дает возможность закрепить за каждым LPAR свой IP-адрес,
который будет выдаваться каждый раз при загрузке ОС. hardware ethernet содержит MAC-адрес LPAR-раздела, используемый во время работы протокола BOOTP и связывающий LPAR с одной из записей host .filename
указывает имя файла, содержащего ядро Linux. Это имя будет выдаваться в
ответ на BOOTP-запросы для загрузки клиентом ядра с указанного в опции next-server TFTP-сервера. Если опция next-server не задана, то файл будет запрошен через TFTP с того же DHCP-сервера.
next-server содержит адрес машины, с которой по TFTP доступно ядро Linux, определенное в опции filename . Если DHCP-сервер является одновременно и TFTP-сервером, то опция next-server может быть опущена.option routers
содержит список шлюзов, через которые TFTP-сервер достижим для клиента,
если они находятся в разных подсетях. Если TFTP-сервер и DHCP-сервер
находятся на одной машине, эту опцию можно опустить.
В
качестве TFTP-сервера можно взять atftpd, имеющийся в дистрибутиве
SLES. Для настройки службы необходимо указать каталог, где хранятся
файлы, доступные для загрузки. Обычно этот каталог называется
/tftpboot. Файл, указанный в опции filename всех секций host в файле dhcpd.conf, должен находиться в этом каталоге.
Например,
файл для запуска установки SUSE по сети называется inst64. Его можно
найти на установочном CD-диске в каталоге /suseboot. Вам нужно
поместить этот файл в каталог /tftpboot. Убедитесь, что право на чтение
этого файла имеют все пользователи.
Этап 3. Использование команды lpar_netboot из HMC
Наряду
с возможностью активировать существующий LPAR, HMC позволяет установить
операционную систему на "чистый" LPAR. Хотя HMC имеет графический
интерфейс, все его функции доступны и из командной строки. Мы отдадим
предпочтение командной строке, так как она позволит нам
автоматизировать этот этап решения.
Для запуска установки по сети применяется команда lpar_netboot . Подробную информацию об этой команде можно прочитать по ссылке: http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/iphcx/lpar_netboot.htm (EN) . В нашем решении мы используем форму команды lpar_netboot именно для сетевой загрузки LPAR.
Листинг 3 содержит пример использования lpar_netboot .
Подставьте в него значения, соответствующие вашей системе, и запустите
команду – включится LPAR и начнется загрузка по сети. В данном примере
предполагается, что:
- В
настройках сервера DHCP/BOOTP прописан MAC-адрес нужного LPAR и имя
исполняемого файла установщика SUSE, что было рассмотрено на предыдущем
этапе.
- В дальнейшем данный LPAR будет всегда получать с DHCP-сервера фиксированный адрес (указанный в файле dhcpd.conf).
Листинг 3. Пример использования команды lpar_netboot
lpar_netboot -f -t ent -m 16E910948703 -s auto -d auto -S 192.168.0.201 -G \ 192.168.0.201 -C 192.168.0.203 lpar1 lpar1 SystemA |
Примечание:
символ '\' в конце строки в листинге 3 означает продолжение команды на
другой строке – он не является частью команды. Не вводите этот символ
при наборе команды.
Ниже описаны параметры, используемые в примере:
-m указывает MAC-адрес загружаемого по сети клиента. Существует другая форма команды lpar_netboot для того, чтобы узнать MAC-адрес. -S содержит IP-адрес сервера DHCP/BOOTP. -G
задает IP-адрес шлюза, через который достижим сервер DHCP/BOOTP. Если
сервер и клиент находятся в одной сети, здесь указывается адрес самого
сервера DHCP/BOOTP.-C – это IP-адрес, который вы хотите назначить клиенту. - Три последних имени означают соответственно:
- Имя LPAR в HMC (
lpar1 ) - Имя конфигурации LPAR – по умолчанию совпадает с именем LPAR (
lpar1 ) - Имя родительского сервера для LPAR в HMC (
SystemA )
Скрипт под названием autoinstall, который вы
можете использовать в HMC для автоматизации установки нового LPAR с
использованием принципов, рассмотренных в статье, можно скачать по этой ссылке: http://download.boulder.ibm.com/ibmdl/pub/software/dw/linux/l-cloud-auto/autoinstall.zip. Скрипт автоматически
получает MAC-адрес LPAR, вызывает скрипт addsystem для настройки и
перезапуска службы DHCP, а затем выполняет команду lpar_netboot для запуска установки. В конце autoinstall запускает команду mkvterm , чтобы дать вам возможность наблюдать за процессом установки.
Этап 4. Автоматизация команды lpar_netboot при помощи параметра -g
Итак,
мы выполнили шаги, описанные на предыдущих этапах, и запустили
установщик Linux. Теперь, открыв консольное соединение с LPAR в HMC, мы
увидим начальный экран программы установки.
Дальнейшие шаги установки также можно автоматизировать. Для этого мы применим параметр -g в команде lpar_netboot .
Этот параметр позволяет передать программе установки дополнительные
данные. Такие дистрибутивы Linux, как SUSE или Red Hat, допускают
полностью автономную установку – необходимо лишь передать установщику
правильные сведения, и процесс пойдет.
В параметре -g
мы строкой передадим все данные, необходимые программе установки,
включая местонахождение файла AutoYaST и инсталляционных RPM-файлов
SUSE. Для каждого дистрибутива формат этой информации документирован и
одинаков для всех архитектур (i386, Power и т.д.).
В листинге 4 показан пример использования параметра -g при запуске автоматической установки. Подставьте в пример свои значения, и команда lpar_netboot запустит полностью автоматическую установку вашей ОС.
Для выполнения примера в таком виде, как мы только что описали, необходимо следующее:
- Наличие
Web-сервера, работающего на сервере установки. Этот сервер может быть
запущен на той же машине, что и DHCP- и TFTP-серверы, однако это не
обязательно.
- Образ установочного диска SUSE должен быть скопирован в корневой каталог документов Web-сервера.
- Файл AutoYaST.xml, подготовленный на этапе 1, должен быть скопирован в тот же каталог Web-сервера, что и установочный образ SUSE.
Листинг 4. Пример использования параметра -g в команде lpar_netboot
-g "hostip=192.168.0.203 netmask=255.255.255.0 \ gateway=192.168.0.1 nameserver=192.168.0.1 insmod=ibmveth \ install=http://192.168.0.201/suse autoyast=http://192.168.0.201/autoyast.xml" |
Примечание: Символ '\' в листинге 4 означает продолжение строки и не является частью команды. При наборе команды не вводите этот символ.
Параметр insmod
применен для загрузки модуля виртуального Ethernet-адаптера. Если
устанавливаемому LPAR-разделу назначены физические Ethernet-адаптеры,
этот параметр не нужен.
Этап 5. Выполнение автоматической установки для нового LPAR
Итак,
мы имеем удобную систему управления LPAR-разделами в Cloud-среде. Для
введения в строй нового LPAR необходимо выполнить следующие шаги:
- Создать новый LPAR в HMC.
- Подключиться к консоли HMC при помощи SSH и запустить команду
lpar_netboot для определения MAC-адреса LPAR. - Добавить информацию о новом LPAR в файл dhcpd.conf.
- Перезапустить службу DHCP для вступления изменений в силу.
- Снова подключиться к консоли HMC и выполнить команду
lpar_netboot для запуска автоматической установки ОС на LPAR.
Далее
необходимо подождать, пока установка ОС не закончится. По завершении в
вашей Cloud-среде появится новый LPAR, готовый к выполнению ваших
приложений.
|