Автоматизация установки Linux в Cloud-средах

Как упростить установку Linux на LPAR-раздел Power или System p

Упрощение процесса установки операционных систем позволяет сократить затраты времени на администрирование систем в Cloud-среде. Прочитав статью, вы узнаете, как автоматизировать установку ОС SUSE Linux® на новый логический раздел (LPAR) системы IBM Power™ или System p®. Аналогичный подход вы сможете использовать и для установки Red Hat Linux или AIX.

Дэвид Эшли, старший ИТ-специалист, IBM

Дэвид Эшли (David Ashley) имеет более чем 25-летний опыт работы с компьютерными системами, начиная от встраиваемых устройств и заканчивая большими мейнфреймами IBM. Он работал преподавателем информационных технологий, руководителем группы разработки, системным архитектором, консультантом по управлению системами, занимался внедрением баз данных. Н настоящее время Дэвид работает консультантом по проектам на основе System p в подразделении Lab Services IBM, а в свободное время занимается open source-проектом Open Object Rexx.



Дэвид Баучер, старший технический специалист, IBM

Дэвид Баучер до недавнего времени являлся старшим техническим специалистом Центра Технологий Linux IBM. С 1986 года он работал в лабораториях разработки IBM с различными операционными системами, занимаясь преимущественно сетевыми средствами и распределенными вычислениями.



26.03.2009

Одной из отличительных черт принципа 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.

Создание и применение предлагаемого решения включает следующие этапы:

  1. Настройка файла AutoYaST
  2. Настройка серверов DHCP/BOOTP и TFTP
  3. Использование команды lpar_netboot из HMC
  4. Автоматизация команды lpar_netboot при помощи параметра -g
  5. Проведение автоматической установки для нового LPAR

Этап 1. Настройка файла AutoYaST

Для управления процессом установки операционной системы в SUSE Linux применяется файл AutoYaST.xml. По умолчанию AutoYaST при каждом вызове создает идентичные друг другу установки. Как следствие можно иметь несколько AutoYaST-файлов для различных конфигураций - например, один AutoYaST-файл для Web-серверов и другой – для MySQL-серверов. Однако настраивать и поддерживать отдельные AutoYaST-файлы для каждого сервера, отличающегося только IP-адресом и именем, довольно трудоемко и неудобно.

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

  1. В стандартном AutoYaST-файле прописано использование DHCP. Измените разделы, отвечающие за сетевые настройки, так, чтобы DHCP применялся только при начальной установке ОС. Проверьте, чтобы ни в одном таком разделе не задавалось имя машины. Если такой раздел имеется, удалите его целиком.
  2. Если где-либо в XML-файле содержится информация о статических IP-адресах, DNS и пр., удалите соответствующие разделы.
  3. Поместите код из листинга 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. По ссылкам из раздела Ресурсы в конце статьи вы найдете подробную информацию об этой команде. В нашем решении мы используем форму команды 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)

В zip-архиве из раздела Загрузка данной статьи имеется скрипт под названием autoinstall, который вы можете использовать в HMC для автоматизации установки нового LPAR с использованием принципов, рассмотренных в статье. Скрипт автоматически получает 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 необходимо выполнить следующие шаги:

  1. Создать новый LPAR в HMC.
  2. Подключиться к консоли HMC при помощи SSH и запустить команду lpar_netboot для определения MAC-адреса LPAR.
  3. Добавить информацию о новом LPAR в файл dhcpd.conf.
  4. Перезапустить службу DHCP для вступления изменений в силу.
  5. Снова подключиться к консоли HMC и выполнить команду lpar_netboot для запуска автоматической установки ОС на LPAR.

Далее необходимо подождать, пока установка ОС не закончится. По завершении в вашей Cloud-среде появится новый LPAR, готовый к выполнению ваших приложений.


Загрузка

ОписаниеИмяРазмер
Программный код для этой статьиautoinstall.zip2KB

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, AIX и UNIX
ArticleID=378590
ArticleTitle=Автоматизация установки Linux в Cloud-средах
publish-date=03262009