Давно пользуюсь в некоторых проектах арендованными серверами и один из используемых мною датацентров — ServerLoft.
С недавних пор (если быть точным, то после выхода RHEL6) стало необходимо устанавливать на сервера CentOS6 или SL6, но проблема в том, что ServerLoft не предлагает возможности установки 6-й версии данных ОС (пока, по крайней мере). Вручную установку ОС специалисты данного ДЦ не производят.
Практически все сервера в ServerLoft обеспечены IPMI/iLO/iRMC/etc. Вследствие данного факта на сервер можно получить текстовую консоль, а для серверов HP даже графическую, а это позволяет установить нужную ОС без особых сложностей.
Подробности далее.
Ниже будет рассмотрена установка Scientific Linux 6 (установка CentOS6 не должна чем-либо отличаться, но я ниразу не ставил 6-й CentOS из-за его медленного, но уверенного отправления на свалку истории, к великому сожалению сообщества).
Если сервер только что предоставлен, то для запуска установки SL6 нужно зайти в интерфейс личного кабинета ServerLoft и произвести установку любой версии CentOS5 (я обычно ставлю CentOS5 x86_64 minimal RAID1) через Restore.
После успешной процедуры Restore вы должны иметь SSH root-доступ на целевой сервер.
Обычно процедура Restore подразумевает автоматическую настройку IPMI-интерфейса на сервере.
IP-адрес менеджмент-интерфейса (он же IPMI) можно посмотреть в личном кабинете в описании сервера. Сразу рекомендую попробовать зайти по HTTPS на данный IP-адрес и убедиться, что в браузере вы видите что-то вменяемое, иначе же нужно оформить тикет и сообщить специалистам, что у вас проблемы с IPMI (такие проблемы обычно решаются рестартом по питанию).
Теперь можно зайти на сервер и сменить пароль на IPMI.
Определяем какой IPMI channel отвечает за взаимодействие с сетью:
Обычно за LAN отвечает 2-й канал. Он будет использован в дальнейшем. Если у вас скрипт выше вернул что-то иное, то это число нужно использовать далее.
Теперь смотрим список пользователей на втором канале:
Обычно список выглядит вот так или подобно:
Теперь меняем пароль пользователю "" и root'у:
Замечание: пароль свыше 16-и символов ставить не рекомендуется, так же не рекомендуется использовать спецсимволы в пароле.
Теперь пришло время проверить, что нас пускает на serial console с удалённого компьютера:
где 10.20.30.40 — IP-адрес вашего IPMI.
Если открылась сессия, на экране видим "[SOL established]" и программа не завершилась сразу же (с ошибкой), то успех достигнут — серийная консоль (serial over LAN) у нас есть.
Обычно сервера в ServerLoft после установки сразу же настроены таким образом, что на серийной консоли запущен agetty и если нажать Enter, то увидим приглашение к логину.
Для открытия консоли можно использовать ipmitool вместо ipmiconsole, но последняя на моём опыте работает в большем количестве случаев.
Стоит заметить, что каждый производитель делает IPMI по принципу «кто во что горазд», поэтому иногда что-то может работать в одном случае и не работать в другом.
Теперь нужно скачать установочное ядро и initrd-образ SL6, а затем загрузиться в это новое ядро.
Открываем на редактирование /etc/grub.conf и приводим к подобному виду:
Обратите внимание на комментарии. Если каталг /boot в вашей системе сделан на отдельном разделе, то пути будут как в примере выше, иначе нужно писать "/boot" в начале всех путей.
Ключевые строки в grub.conf:
— «console=ttyS0,57600 console=tty0» в параметрах каждого ядра — это настройки перенаправления сообщений ядра в tty0, это терминал, подключеный к COM-порту IPMI-контроллера;
— «serial --unit=0 --speed=57600» и «terminal --timeout=2 serial console» — перенаправление вывода Grub на serial console (помимо реальных консолей, естественно);
— «default 1» — в момент загрузки нужно выбрать в Grub пункт EL6, чтобы произвести установку (по умолчанию будет загружаться ядро CentOS5 и старая система);
— «title EL6» — пункт нового ядра и далее — его описание.
Почти всё готово к перезагрузке в новое ядро. Осталось лишь запомнить настройки сети, чтобы внести их в инсталлере, ведь установка будет произведена из сетевых источников.
Теперь можно перезагружаться в ядро SL6 и производить установку.
Выбираем в серийной консоли созданные ранее пункт меню:
и наблюдаем за процессом загрузки, пока инсталлятор не спросит первый вопрос:
Идём по диалогу.
Теперь инсталлятор спрашивает о методе инсталляции
Выбираем URL и естественно, нужно настроить сеть:
Здесь нужно вспомнить какой интерфейс у нас был настроен в исходной системе и произвести его настройки.
Отключаем IPv6, IPv4 конфигурируем вручную:
Вводим настройки IPv4 (google DNS после переустановки нужно сменить на что-то более вменяемое):
Welcome to Scientific Linux for x86_64
С сетью закончили и IP-адрес сервера должен начать пинговаться.
Тепень настраиваем путь до репозитория (ftp://ftp1.scientificlinux.org/linux/scientific/6.1/x86_64/os/):
Нажимаем ОК и наблюдаем как сервер загружает необходимые для последующей инсталляции файлы установщика.
Теперь осталось ответить на последний важный вопрос — желаем ли проводить установку через VNC в графическом режиме или же продолжаем в текстовом:
Нажимаем Start VNC и вводим пароль:
Видим сообщение
Радуемся. На локальной системе, которая работает в графическом режиме запускаем VNC-клиент:
(или любой другой любимый VNC-клиент)
и производим установку в полноценном графическом режиме.
P.S. Параметры для ядра, которые передаются в Anaconda при установке. Здесь можно передать путь до файла kikcstart и все сетевые настройки так, чтобы система проинсталлировалась автоматически. Файл kickstart нужно предварительно написать, но данная статья не о том, как его писать, а лишь чтобы показать как можно установить свежую ОС в удобном режиме инсталлятора.
P.P.S. Кому-то вполне подойдёт и текстовая инсталляция, но в ней, к сожалению, нельзя полноценно настроить mdraid и LVM.
С недавних пор (если быть точным, то после выхода RHEL6) стало необходимо устанавливать на сервера CentOS6 или SL6, но проблема в том, что ServerLoft не предлагает возможности установки 6-й версии данных ОС (пока, по крайней мере). Вручную установку ОС специалисты данного ДЦ не производят.
Практически все сервера в ServerLoft обеспечены IPMI/iLO/iRMC/etc. Вследствие данного факта на сервер можно получить текстовую консоль, а для серверов HP даже графическую, а это позволяет установить нужную ОС без особых сложностей.
Подробности далее.
Ниже будет рассмотрена установка Scientific Linux 6 (установка CentOS6 не должна чем-либо отличаться, но я ниразу не ставил 6-й CentOS из-за его медленного, но уверенного отправления на свалку истории, к великому сожалению сообщества).
Если сервер только что предоставлен, то для запуска установки SL6 нужно зайти в интерфейс личного кабинета ServerLoft и произвести установку любой версии CentOS5 (я обычно ставлю CentOS5 x86_64 minimal RAID1) через Restore.
После успешной процедуры Restore вы должны иметь SSH root-доступ на целевой сервер.
IPMI
Обычно процедура Restore подразумевает автоматическую настройку IPMI-интерфейса на сервере.
IP-адрес менеджмент-интерфейса (он же IPMI) можно посмотреть в личном кабинете в описании сервера. Сразу рекомендую попробовать зайти по HTTPS на данный IP-адрес и убедиться, что в браузере вы видите что-то вменяемое, иначе же нужно оформить тикет и сообщить специалистам, что у вас проблемы с IPMI (такие проблемы обычно решаются рестартом по питанию).
Теперь можно зайти на сервер и сменить пароль на IPMI.
Определяем какой IPMI channel отвечает за взаимодействие с сетью:
# for i in {0..15}; do ipmitool channel info $i 2>/dev/null | grep -i LAN > /dev/null && echo $i; done
Обычно за LAN отвечает 2-й канал. Он будет использован в дальнейшем. Если у вас скрипт выше вернул что-то иное, то это число нужно использовать далее.
Теперь смотрим список пользователей на втором канале:
# ipmitool user list 2
Обычно список выглядит вот так или подобно:
ID Name Enabled Callin Link Auth IPMI Msg Channel Priv Limit 1 true true true true Unknown (0x00) 2 root true true true true OEM
Теперь меняем пароль пользователю "" и root'у:
# ipmitool user set password 1 somesecret
# ipmitool user set password 2 somesecret
Замечание: пароль свыше 16-и символов ставить не рекомендуется, так же не рекомендуется использовать спецсимволы в пароле.
Теперь пришло время проверить, что нас пускает на serial console с удалённого компьютера:
$ ipmiconsole -W sun20,solpayloadsize -h 10.20.30.40 -u root -p somesecret --serial-keepalive
где 10.20.30.40 — IP-адрес вашего IPMI.
Если открылась сессия, на экране видим "[SOL established]" и программа не завершилась сразу же (с ошибкой), то успех достигнут — серийная консоль (serial over LAN) у нас есть.
Обычно сервера в ServerLoft после установки сразу же настроены таким образом, что на серийной консоли запущен agetty и если нажать Enter, то увидим приглашение к логину.
Для открытия консоли можно использовать ipmitool вместо ipmiconsole, но последняя на моём опыте работает в большем количестве случаев.
Стоит заметить, что каждый производитель делает IPMI по принципу «кто во что горазд», поэтому иногда что-то может работать в одном случае и не работать в другом.
Ядро и initrd-образ SL6, загрузка в инсталлятор
Теперь нужно скачать установочное ядро и initrd-образ SL6, а затем загрузиться в это новое ядро.
# cd /boot/
# wget ftp1.scientificlinux.org/linux/scientific/6.1/x86_64/os/isolinux/vmlinuz
# wget ftp1.scientificlinux.org/linux/scientific/6.1/x86_64/os/isolinux/initrd.img
Открываем на редактирование /etc/grub.conf и приводим к подобному виду:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. console=ttyS0,57600 console=tty0 # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 console=ttyS0,57600 console=tty0 # initrd /initrd-version.img #boot=/dev/sda serial --unit=0 --speed=57600 terminal --timeout=2 serial console default=1 timeout=5 hiddenmenu title EL6 kernel /vmlinuz console=ttyS0,57600 console=tty0 serial text initrd /initrd.img title CentOS (2.6.18-274.7.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-274.7.1.el5 ro root=LABEL=/ nodmraid console=ttyS0,57600 console=tty0 initrd /initrd-2.6.18-274.7.1.el5.img title CentOS (2.6.18-274.el5) root (hd0,0) kernel /vmlinuz-2.6.18-274.el5 ro root=LABEL=/ nodmraid console=ttyS0,57600 console=tty0 initrd /initrd-2.6.18-274.el5.img
Обратите внимание на комментарии. Если каталг /boot в вашей системе сделан на отдельном разделе, то пути будут как в примере выше, иначе нужно писать "/boot" в начале всех путей.
Ключевые строки в grub.conf:
— «console=ttyS0,57600 console=tty0» в параметрах каждого ядра — это настройки перенаправления сообщений ядра в tty0, это терминал, подключеный к COM-порту IPMI-контроллера;
— «serial --unit=0 --speed=57600» и «terminal --timeout=2 serial console» — перенаправление вывода Grub на serial console (помимо реальных консолей, естественно);
— «default 1» — в момент загрузки нужно выбрать в Grub пункт EL6, чтобы произвести установку (по умолчанию будет загружаться ядро CentOS5 и старая система);
— «title EL6» — пункт нового ядра и далее — его описание.
Почти всё готово к перезагрузке в новое ядро. Осталось лишь запомнить настройки сети, чтобы внести их в инсталлере, ведь установка будет произведена из сетевых источников.
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:26:70:70:70:70 brd ff:ff:ff:ff:ff:ff inet 123.123.123.170/26 brd 188.138.40.191 scope global eth0 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:26:80:80:80:80 brd ff:ff:ff:ff:ff:ff 4: sit0: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 # # ip r | grep default default via 123.123.123.129 dev eth0
Теперь можно перезагружаться в ядро SL6 и производить установку.
Установка и VNC
Выбираем в серийной консоли созданные ранее пункт меню:
GNU GRUB version 0.97 (627K lower / 2094848K upper memory) +-------------------------------------------------------------------------+ | EL6 | | CentOS (2.6.18-274.7.1.el5) | | CentOS (2.6.18-274.el5) | | | | | | | | | | | | | | | | | | | +-------------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, 'a' to modify the kernel arguments before booting, or 'c' for a command-line.
и наблюдаем за процессом загрузки, пока инсталлятор не спросит первый вопрос:
Welcome to Scientific Linux for x86_64 ┌────────┤ Choose a Language ├────────┐ │ │ │ What language would you like to use │ │ during the installation process? │ │ │ │ Catalan ↑ │ │ Chinese(Simplified) ▒ │ │ Chinese(Traditional) ▮ │ │ Croatian ▒ │ │ Czech ▒ │ │ Danish ▒ │ │ Dutch ▒ │ │ English ↓ │ │ │ │ ┌────┐ │ │ │ OK │ │ │ └────┘ │ │ │ │ │ └─────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Идём по диалогу.
Теперь инсталлятор спрашивает о методе инсталляции
Welcome to Scientific Linux for x86_64 ┌───┤ Installation Method ├───┐ │ │ │ What type of media contains │ │ the installation image? │ │ │ │ Local CD/DVD │ │ Hard drive │ │ NFS directory │ │ URL │ │ │ │ ┌────┐ ┌──────┐ │ │ │ OK │ │ Back │ │ │ └────┘ └──────┘ │ │ │ │ │ └─────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Выбираем URL и естественно, нужно настроить сеть:
Welcome to Scientific Linux for x86_64 ┌───────────────┤ Networking Device ├───────────────┐ │ │ │ You have multiple network devices on this system. │ │ Which would you like to install through? │ │ │ │ eth0 - Ethernet device eth0 - 00:26:70:70:70:70 │ │ eth1 - Ethernet device eth1 - 00:26:80:80:80:80 │ │ │ │ ┌────┐ ┌──────────┐ ┌──────┐ │ │ │ OK │ │ Identify │ │ Back │ │ │ └────┘ └──────────┘ └──────┘ │ │ │ │ │ └───────────────────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Здесь нужно вспомнить какой интерфейс у нас был настроен в исходной системе и произвести его настройки.
Отключаем IPv6, IPv4 конфигурируем вручную:
Welcome to Scientific Linux for x86_64 ┌─────────────┤ Configure TCP/IP ├─────────────┐ │ │ │ [*] Enable IPv4 support │ │ ( ) Dynamic IP configuration (DHCP) │ │ (*) Manual configuration │ │ │ │ [ ] Enable IPv6 support │ │ (*) Automatic neighbor discovery │ │ ( ) Dynamic IP configuration (DHCPv6) │ │ ( ) Manual configuration │ │ │ │ ┌────┐ ┌──────┐ │ │ │ OK │ │ Back │ │ │ └────┘ └──────┘ │ │ │ │ │ └──────────────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Вводим настройки IPv4 (google DNS после переустановки нужно сменить на что-то более вменяемое):
Welcome to Scientific Linux for x86_64
┌────────────────┤ Manual TCP/IP Configuration ├─────────────────┐ │ │ │ Enter the IPv4 and/or the IPv6 address and prefix (address / │ │ prefix). For IPv4, the dotted-quad netmask or the CIDR-style │ │ prefix are acceptable. The gateway and name server fields must │ │ be valid IPv4 or IPv6 addresses. │ │ │ │ IPv4 address: 123.123.123.170_ / 26______________ │ │ Gateway: 123.123.123.129__________________________ │ │ Name Server: 8.8.4.4__________________________________ │ │ │ │ ┌────┐ ┌──────┐ │ │ │ OK │ │ Back │ │ │ └────┘ └──────┘ │ │ │ │ │ └────────────────────────────────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
С сетью закончили и IP-адрес сервера должен начать пинговаться.
Тепень настраиваем путь до репозитория (ftp://ftp1.scientificlinux.org/linux/scientific/6.1/x86_64/os/):
Welcome to Scientific Linux for x86_64 ┌────────────────────────┤ URL Setup ├─────────────────────────┐ │ │ │ Please enter the URL containing the Scientific │ │ Linux installation image on your server. │ │ │ │ ://ftp1.scientificlinux.org/linux/scientific/6.1/x86_64/os/_ │ │ │ │ [ ] Enable HTTP proxy │ │ │ │ Proxy URL ___________________________________ │ │ Username _______________ │ │ │ │ Password _______________ │ │ │ │ ┌────┐ ┌──────┐ │ │ │ OK │ │ Back │ │ │ └────┘ └──────┘ │ │ │ │ │ └──────────────────────────────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Нажимаем ОК и наблюдаем как сервер загружает необходимые для последующей инсталляции файлы установщика.
Теперь осталось ответить на последний важный вопрос — желаем ли проводить установку через VNC в графическом режиме или же продолжаем в текстовом:
┌──────────┤ Would you like to use VNC? ├──────────┐ │ │ │ Text mode provides a limited set of installation │ │ options. It does not allow you to specify your │ │ own partitioning layout or package selections. │ │ Would you like to use VNC mode instead? │ │ │ │ ┌───────────┐ ┌───────────────┐ │ │ │ Start VNC │ │ Use text mode │ │ │ └───────────┘ └───────────────┘ │ │ │ │ │ └──────────────────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Нажимаем Start VNC и вводим пароль:
┌─────────────┤ VNC Configuration ├──────────────┐ │ │ │ A password will prevent unauthorized listeners │ │ connecting and monitoring your installation │ │ progress. Please enter a password to be used │ │ for the installation │ │ │ │ Password: *********_______ │ │ Password (confirm): *********_______ │ │ │ │ │ │ ┌────┐ ┌─────────────┐ ┌──────┐ │ │ │ OK │ │ No password │ │ Back │ │ │ └────┘ └─────────────┘ └──────┘ │ │ │ │ │ └────────────────────────────────────────────────┘ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Видим сообщение
21:52:40 Starting VNC... 21:52:41 The VNC server is now running. 21:52:41 You chose to execute vnc with a password. 21:52:41 Please manually connect your vnc client to loftXXXX.serverloft.com:1 (123.123.123.170) to begin the install. Press <enter> for a shell 21:52:41 Starting graphical installation.
Радуемся. На локальной системе, которая работает в графическом режиме запускаем VNC-клиент:
$ vncviewer loftXXXX.serverloft.com:1
(или любой другой любимый VNC-клиент)
и производим установку в полноценном графическом режиме.
P.S. Параметры для ядра, которые передаются в Anaconda при установке. Здесь можно передать путь до файла kikcstart и все сетевые настройки так, чтобы система проинсталлировалась автоматически. Файл kickstart нужно предварительно написать, но данная статья не о том, как его писать, а лишь чтобы показать как можно установить свежую ОС в удобном режиме инсталлятора.
P.P.S. Кому-то вполне подойдёт и текстовая инсталляция, но в ней, к сожалению, нельзя полноценно настроить mdraid и LVM.