Показаны сообщения с ярлыком debian-installer. Показать все сообщения
Показаны сообщения с ярлыком debian-installer. Показать все сообщения

воскресенье, 1 октября 2017 г.

Автоматизация установки Ubuntu/Debian с LVM

Перевод: Ubuntu/Debian preseedint with LVM
Автор: Джеймс Тран (James Tran)

Примечания переводчика:
Перед тем, как я написал заметку Установка Debian с флешки по SSH, я готовил флешку, воспользовавшись несколькими материалами из интернета. Я сохранил ссылки на использованные материалы, чтобы потом перевести их на русский язык. Эта статья оказалась не очень качественной - в ней практически отсутствуют объяснения, а есть только примеры preseed-файла. Следующие две статьи, ссылки на которые я сохранил и переводы которых выложу в блог, должны быть получше - там больше объяснений. Более того - на них ссылается автор этой статьи.
Когда увидите заставку Ubuntu или Debian, нажмите клавишу табуляции, а затем добавьте:
auto url=http://mywebserver/mypreseed.cfg
Вы можете воспользоваться этим примером для быстрого развёртывания сервера для размещения файла автоматизации установки: Python Simple HTTP Server

У вас по-прежнему будет запрашиваться информация для локализации, поскольку она запрашивается ДО загрузки файла автоматизации установки для Debian/Ubuntu (согласен, это глупо). Эти настройки не подтягиваются.
# Настройки клавиатуры и локализации
####################################################################

d-i debian-installer/locale string en_US
d-i console-keymaps-at/keymap select sg-latin1

# Сеть
####################################################################

d-i netcfg/disable_dhcp boolean false
d-i netcfg/get_hostname string localhost
d-i netcfg/get_domain string localdomain
d-i netcfg/choose_interface select eth0
Вы можете обойти это ограничение, пересобрав загрузочный компакт-диск или выполнив установку по PXE, при которой загружается вся информация, указанная выше.

Пример:
auto url=http://mywebserver/mypreseed.cfg \
locale=en_US console-keymaps-at/keymap=sg-latin1 \
interface=eth0 hostname=localhost domain=localdomain --

ТЕПЕРЬ СОЗДАДИМ НАСТОЯЩИЙ ФАЙЛ КОНФИГУРАЦИИ ДЛЯ АВТОМАТИЗАЦИИ УСТАНОВКИ

Настроим локализацию:
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i time/zone string UTC
d-i debian-installer/splash boolean false
d-i debian-installer/language string en
d-i debain-installer/country string US
d-i console-keymaps-at/keymap select sg-latin1
Настроим сеть:
d-i netcfg/get_nameservers string 192.168.1.5
d-i netcfg/get_ipaddress string 192.168.1.10
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.1.1
d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string tempnode
d-i netcfg/get_domain string localdomain
Настроим используемый репозиторий и каталоги репозитория, в которых будет производиться поиск устанавливаемых файлов:
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
Произведём разбивку диска и настроим на нём LVM:
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/device_remove_lvm_span boolean true
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-auto-lvm/new_vg_name string system
Настроим разделы диска и логические тома LVM.

Сделаем следующее:
  • /boot : - загрузочная файловая система ext3 размером 300 мегабайт,
  • / : - файловая система ext3 от 10 гигабайт и более вплоть до конца диска,
  • swap : использовать 200% размера оперативной памяти системы или 8 гигабайт.
ОБРАТИТЕ ВНИМАНИЕ НА ФОРМАТИРОВАНИЕ В ЭТОМ РАЗДЕЛЕ - ОНО ОЧЕНЬ ВАЖНО
#d-i partman-auto/init_automatically_partition \
# select Guided - use entire disk and set up LVM
d-i partman-auto/expert_recipe string \
    boot-root :: \
        40 300 300 ext3 \
            $primary{ } \
            $bootable{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext3 } \
            mountpoint{ /boot } \
        . \
        2000 10000 1000000000 ext3 \
            $lvmok{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext3 } \
            mountpoint{ / } \
        . \
        8000 8000 200% linux-swap \
            $lvmok{ } \
            method{ swap } format{ } \
.
Вот другой пример LVM:
d-i partman-auto/expert_recipe string \
    boot-root :: \
        40 300 300 ext4 \
            $primary{ } \
            $bootable{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext4 } \
            mountpoint{ /boot } \
        . \
        2000 10000 1000000000 ext4 \
            $lvmok{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext4 } \
            mountpoint{ / } \
        . \
        2000 1000 10000 ext4 \
            $lvmok{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext4 } \
            mountpoint{ /var } \
        . \
        2000 1000 60000 ext4 \
            $lvmok{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext4 } \
            mountpoint{ /var/lib/mysql } \
        . \
        2000 1000 30000 ext4 \
            $lvmok{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext4 } \
            mountpoint{ /www } \
        . \
        8000 8000 200% linux-swap \
            $lvmok{ } \
            method{ swap } format{ } \
.
Ответьте да на все запросы о разделах и LVM:
d-i partman-lvm/confirm boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true
Настроим часовой пояс:
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.ubuntu.com
d-i time/zone string US/Los_Angeles
Настроим пользователя root и первого пользователя:
d-i base-installer/kernel/image string linux-server
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password $1$VuPOoDRD$seX.C54E8TUdMkaAmKvjx0
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password-crypted password $1$NvFY8IuR$BGqOozSN91ljvQB.pVLDw.
d-i user-setup/encrypt-home boolean false
d-i user-setup/allow-password-weak boolean true
d-i passwd/user-default-groups string adm cdrom dialout lpadmin plugdev sambashare
Разное:
d-i apt-setup/services-select multiselect security
d-i debian-installer/allow_unauthenticated string true
d-i pkgsel/upgrade select safe-upgrade
d-i pkgsel/language-packs multiselect
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean true
popularity-contest popularity-contest/participate boolean false
tasksel tasksel/first multiselect standard, openssh-server
d-i grub-installer/skip boolean false
d-i lilo-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean false
d-i finish-install/keep-consoles boolean false
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean true
d-i debian-installer/exit/halt boolean false
d-i debian-installer/exit/poweroff boolean false
Выбор устанавливаемых пакетов:
d-i pkgsel/include string vim openssh-server
ВОТ КАК ЭТО ВЫГЛЯДИТ ОДНИМ ФАЙЛОМ:
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i time/zone string UTC
d-i debian-installer/splash boolean false
d-i debian-installer/language string en
d-i debain-installer/country string US
d-i netcfg/get_nameservers string 192.168.1.5
d-i netcfg/get_ipaddress string 192.168.1.10
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.1.1
d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string tempnode
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/device_remove_lvm_span boolean true
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-auto-lvm/new_vg_name string system
#d-i partman-auto/init_automatically_partition \
# select Guided - use entire disk and set up LVM
d-i partman-auto/expert_recipe string \
    boot-root :: \
        40 300 300 ext3 \
            $primary{ } \
            $bootable{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext3 } \
            mountpoint{ /boot } \
        . \
        2000 10000 1000000000 ext3 \
            $lvmok{ } \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext3 } \
            mountpoint{ / } \
        . \
        8000 8000 200% linux-swap \
            $lvmok{ } \
            method{ swap } format{ } \
        .
d-i partman-lvm/confirm boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.ubuntu.com
d-i time/zone string US/Los_Angeles
d-i base-installer/kernel/image string linux-server
d-i base-installer/kernel/image string linux-server
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password $1$VuPOoDRD$seX.C54E8TUdMkaAmKvjx0
d-i passwd/user-fullname string Ubuntu User
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i passwd/user-default-groups string adm cdrom dialout lpadmin plugdev sambashare
d-i apt-setup/services-select multiselect security
d-i debian-installer/allow_unauthenticated string true
d-i pkgsel/upgrade select safe-upgrade
d-i pkgsel/language-packs multiselect
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean true
popularity-contest popularity-contest/participate boolean false
tasksel tasksel/first multiselect standard, openssh-server
d-i grub-installer/skip boolean false
d-i lilo-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean false
d-i finish-install/keep-consoles boolean false
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean true
d-i debian-installer/exit/halt boolean false
d-i debian-installer/exit/poweroff boolean false
d-i pkgsel/include string vim openssh-server
Информация для этой статьи была взята отсюда (спасибо):
http://cptyesterday.wordpress.com/2012/06/17/notes-on-using-expert_recipe-in-debianubuntu-preseed-files/
Пример файла автоматизации установки можно найти здесь:
https://github.com/cookingclouds/Preseed

воскресенье, 16 апреля 2017 г.

Установка Debian с флешки по SSH

Когда возникает задача настроить сервер для другого города, часто задача решается одним из способов:
  1. Сервер отправляется в филиал полностью преднастроенным, так что местным системным администраторам остаётся только установить его в стойку и подключить к сети,
  2. Один из системных администраторов из головного офиса компании отправляется в командировку в филиал, где и настраивает сервер вместе с местными системными администраторами,
  3. Местные системные администраторы сами устанавливают на имеющееся оборудование операционную систему и настраивают на сервере сеть, после чего настройку сервера продолжают системные администраторы из головного офиса.
Последний способ позволяет обойтись без расходов на транспорт - не нужно платить за перевозку преднастроенного сервера, не нужно оплачивать командировочные расходы. Однако и у этого способа имеются свои недостатки - иногда на этапе установки операционной системы бывает нужно выполнить сложную разметку дисков или подгрузить дополнительные драйверы. В подобных случаях лучшим решением может быть использование устройства IP-KVM, если оно есть в филиале. Если же такого устройства в филиале нет, то сгодиться могут разнообразные суррогаты. Один из таких суррогатов и будет рассмотрен в этой статье. Мы подготовим образ флэш-карты с инсталлятором операционной системы Debian, консоль которого после загрузки будет доступна по SSH.

Чтобы подготовить загрузочный образ, необходима уже установленная система Debian. Установим пакет debian-installer, необходимые для его сборки зависимости и пакет fakeroot:
# apt-get install dpkg-dev
# apt-get source debian-installer
# apt-get build-dep debian-installer
# apt-get install fakeroot
В текущем каталоге будет создан каталог с исходными текстами пакета debian-installer. Перейдём в этот каталог:
# cd debian-installer-20130613+deb7u3/
Откроем в редакторе файл build/pkg-lists/base и добавим в него одну строчку:
#include "network-console"
Эта строчка добавит в инсталлятор дополнительные пакеты, которые сделают возможным доступ к загруженному инсталлятору по SSH.

Создадим файл preseed.cfg и пропишем в него ответы на первые вопросы инсталлятора:
# Выбираем локаль и раскладку клавиатуры
d-i localechooser/shortlist select RU
d-i keyboard-configuration/xkb-keymap select ru
# Задаём настройки сетевой карты
d-i netcfg/enable boolean true
d-i netcfg/choose_interface select eth0
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string 192.168.1.16
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.1.1
d-i netcfg/get_nameservers string 192.168.1.2 192.168.1.3
d-i netcfg/confirm_static boolean true
# Задаём имя сервера и домен
d-i netcfg/get_hostname string server
d-i netcfg/get_domain string core.ufanet.ru
# Включаем доступ к инсталлятору по SSH с логином installer и паролем installer-password
d-i anna/choose_modules string network-console
d-i preseed/early_command string anna-install network-console
d-i network-console/password password installer-password
d-i network-console/password-again password installer-password
# Подключаем сетевой репозиторий для скачивания недостающих пакетов
d-i mirror/country string manual
d-i mirror/http/hostname string mirror.ufanet.ru
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i mirror/suite string wheezy
d-i mirror/udeb/suite string wheezy
В этом файле можно сразу указать сетевые настройки будущего сервера, согласовав их с системными администраторами филилала. А можно договориться использовать одни и те же сетевые настройки только на период настройки новых серверов, после чего на готовом сервере менять настройки на постоянные.

Теперь отредактируем build/config/local и добавим в него полное имя файла preseed.cfg и кодовое имя релиза инсталлятора:
PRESEED=/root/preseed.cfg
USE_UDEBS_FROM=wheezy
Осталось только собрать образ загрузочного диска с инсталлятором. Для этого нужно перейти в каталог build и выполнить команду сборки образа:
# cd build
# fakeroot make rebuild_monolithic
Эта команда соберёт образ "small bootable CD image for network install" - "маленький загрузочный образ компакт-диска для сетевой установки". Такой образ содержит полный комплект пакетов самого инсталлятора, но устанавливаемые пакеты будет скачивать по сети.

Собранный образ можно найти в файле dest/netboot/mini.iso Остаётся только отправить этот образ системным администраторам филиала, например, по электронной почте. Дальше системные администраторы филиала должны будут записать этот образ на свободную флэшку и загрузить с неё будущий сервер. Дальнейший процесс разметки дисков, настройки учётных записей, настройки системных часов, часового пояса можно производить через SSH из головного офиса, зайдя по SSH с логином installer и указав пароль из файла preseed.cfg (в примере выше это пароль installer-password).

Полный список вариантов образов можно узнать, выполнив команду fakeroot make без указания конкретной цели сборки. Среди других вариантов для наших целей полезными могут оказаться:
  • rebuild_netboot - "tiny CD image that boots the netboot installer" - "крошечный образ компакт-диска, который загрузит установщик с сетевой загрузкой". Образ получится самым маленьким, т.к. недостающие пакеты инсталлятора будут загружаться по сети. Собранный образ можно найти в файле dest/monolithic/mini.iso,
  • rebuild_hd-media - "1 gb image (compressed) for USB memory stick" - "сжатый образ размером в 1 гигабайт для флэш-карт". Этот образ содержит в себе полный комплект пакетов инсталлятора и самые популярные устанавливаемые пакеты операционной системы. Собранный образ можно найти в файле dest/hd-media/boot.img.gz
При создании файла preseed.cfg можно ориентироваться на официальный пример файла wheezy/example-preseed.txt или брать значения опций из уже установленной где-либо системы. Для этого нужно установить в этой системе пакет debconf-utils:
# apt-get install debconf-utils
Вывести на экран значения настроек можно при помощи такой команды:
# debconf-get-selections --install
Вместо указания настроек mirror в файле preseed.cfg можно создать файл со списком репозиториев - build/sources.list.udeb.local. Например, вот такой:
deb http://mirror.ufanet.ru/debian wheezy main contrib non-free
deb http://mirror.ufanet.ru/debian wheezy-updates main contrib non-free
deb http://mirror.ufanet.ru/debian wheezy-proposed-updates main contrib non-free
deb http://mirror.ufanet.ru/debian-security wheezy/updates main contrib non-free
Использованные материалы: