Назначение¶
FirstBoot - модуль AccentOS, обеспечивающий установку и настройку программного обеспечения при первом запуске физического или виртуального сервера. Может быть также использован для обеспечения корректного запуска служб при последующих запусках.
Способ установки¶
Служба установки при работе использует Cobbler и файлы ответов.
Пример части файла ответов:
d-i preseed/late_command string wget -O- \
http://$http_server/init/update_kernel | chroot /target /bin/sh -s; wget -O- \
http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \
chroot /target /bin/sh -s; wget -O- \
http://$http_server/cblr/svc/op/nopxe/$what/$name; wget -O- \
http://$http_server/server | /bin/sh -s;
Команда, сохраненная в d-i preseed/late_command
, запускается в самом конце запуска инсталлятора и предназначена для установки пользовательского программного обеспечения.
В данном примере производится обновление ядра, затем производится обращение к Cobbler с целью запуска скрипта preseed_late_default
и снятия флага сетевой загрузки сервера, затем на стороне устанавливаемого сервера запускается скрипт http://$http_server/server
(в данном случае), который устанавливает службу FirstBoot и скачивает необходимые скрипты-модули для установки программного обеспечения сервера при первом запуске. Server - файл-скрипт, размещенный на стороне Cobbler, в котором прописываются скрипты установки программного обеспечения.
Пример такого скрипта:
#!/bin/bash
http_server=cobbler.test.loc
wget -O- http://$http_server/init/firstboot | chroot /target /bin/sh -s
wget -O /target/var/lib/firstboot/scripts/15-install.sh http://$http_server/init/rc-local
wget -O /target/var/lib/firstboot/scripts/05-initrc.source http://$http_server/init/initrc.controllerone
wget -O /target/var/lib/firstboot/scripts/20-install_bind9.sh http://$http_server/init/install_bind9
wget -O /target/var/lib/firstboot/scripts/20-install_ntp.sh http://$http_server/init/install_ntp
wget -O /target/var/lib/firstboot/scripts/20-install_update-dns.sh http://$http_server/init/install_update-dns
wget -O /target/var/lib/firstboot/scripts/25-install_consul.sh http://$http_server/init/install_consul
wget -O /target/var/lib/firstboot/scripts/25-install_openstackclient.sh http://$http_server/init/install_openstackclient
wget -O /target/var/lib/firstboot/scripts/45-install_nova-compute.sh http://$http_server/init/install_nova-compute
wget -O /target/var/lib/firstboot/scripts/40-install_neutron-compute.sh http://$http_server/init/install_neutron-compute
wget -O /target/var/lib/firstboot/scripts/80-install_install_vm_controllerdb.sh http://$http_server/init/install_vm_controllerdb
wget -O /target/var/lib/firstboot/scripts/50-install_ceilometer-compute.sh http://$http_server/init/install_ceilometer-compute
wget -O /target/var/lib/firstboot/scripts/90-correct_nova_shell.sh http://$http_server/init/correct_nova_shell
Скрипт http://$http_server/server
скачивает с сервера Cobbler (или иного сервера) скрипт модули и сохраняет их с цифровым префиксом для обеспечения требуемого порядка запуска. Путь для сохранения имеет префикс /target
, так как данный скрипт выполняется в окружении инсталлятора дистрибутива, и файловая система устанавливаемого сервера смонтирована в каталог /target
. Пути хранения исходных скриптов могут быть в дальнейшем изменены для создания соответствующей иерархии каталогов для установки различных дистрибутивов и их версий.
Первый скачиваемый скрипт запускается сразу после загрузки. Именно данный скрипт создает службу FirstBoot и формирует необходимую иерархию каталогов для данной службы. Порядок загрузки других скриптов не важен, но следует обратить внимание на цифровой префикс имен сохраняемых скриптов с целью обеспечения необходимого приоритета их выполнения службой FirstBoot.
Необходимо настроить файлы с переменными initrc
и openrc
.
Все переменные для настройки облака указываются в файле openrc
.
Описание работы службы FirstBoot¶
Служба FirstBoot - это bash скрипт, который при первом запуске сортирует скрипты в каталоге /var/lib/firstboot/scripts
по имени и запускает их. Для простоты восприятия имена скриптов начинаются с чисел.
Скрипты делятся на два типа: скрипты определение переменных и установочные скрипты. Для определения переменных скрипты должны иметь суффикс .source
, вызов данных скриптов производится через команду source
. Остальные скрипты запускаются через вызов /bin/bash
вне зависимости от расширения.
Вывод работы скриптов сохраняется в файл /var/log/firstboot
или journalctl -u firstboot
.
Окончание работы первого запуска службы завершается созданием файла /var/lib/firstboot/onstart
. С помощью удаления данного файла можно протестировать работу службы повторно.
Наличие файла /var/lib/firstboot/onstart
сигнализирует службе FirstBoot, что осуществляется повторный, а не первичный запуск сервера, и служба запускает скрипты из каталога /var/lib/firstboot/boot
. Данный режим является удобным, если процесс запуска службы является сложным: использующим таймауты или иные условия запуска того или иного сервиса, но при этом нежелательные к размещению в файлах systemd
, например, для оперативного перазапуска в процессе работы сервера.