Как стать автором
Обновить

Комментарии 22

Может вам было проще Ansible использовать?

Ansible работает в операционной системе. А ее еще нет, только железка.

А скрипты где работают? На алюминие? :-)
Как только вы стартуете dracut, у вас сразу же операционная система. А запускаете ли вы там свои самописные скипты или красиво оформленное приложение — это уже неважно. Одно и тоже.

Я думаю, это точно было бы не проще.
Все равно пришлось бы делать универсальный pxe-live образ, скрипты для взаимодействия с различными подсистемами и прочее.
Плюс, Ansible, вроде, появился в 2012. А я начал работать над моим решением приблизительно в это же время.
НЛО прилетело и опубликовало эту надпись здесь

Это очень низкокачественные продукты. Все они выросли из феерически убогих скриптов быдлоадминов. Лучше руками сделать. Надежнее.

НЛО прилетело и опубликовало эту надпись здесь

Вы решили на личности перейти?


Я не только досконально когда-то знал cobbler и Foreman, но я даже консультировал основателя последнего — мой бывший сосед. Там такой трэш на руби внутри, что вам не снилось.


Вообще, это одна из стадий взросления инженера — перестать из всего официального делать себе авторитеты. Вот вам и я на личности перешел.


А то не знаю, может вам и RHEL качественным кажется)))) Я не удивлюсь уже.


Небольшая демонстрация формана:


#!/bin/bash

# This script will allow you to run tfm-stories
# while foreman can still use webpack-3 for the normal build.
# 
# It is here temporarily until the migration to webpack-4 will be done. 

if [ "$NODE_ENV" = "production" ]; then
  exit 0
fi

cd ./node_modules/@theforeman/stories
npm install

От каждой строчки волосы дыбом встают. Это я еще самый короткий файл выбрал. Там люди писали — они даже не знают, что логи в линуксе в файл не пишут — это нарушает single responsibility, за это отвечает rsyslog.

Не пробовал, но периодически, я смотрел продукты, которые выходили.
Я думаю, преимущества нашего решения:
1) В целом небольшая база кодовая база. Все решение вполне может поддерживать один человек. В любое время можно добавить новый функционал.
2) Из доступных продуктов не все могут обеспечивать полный перечень необходимых функций (обновление прошивок, настройка ilo/idrac, прочее).

Автоматическиая настройка BIOS и апаратных RAID сработает для очень узкого спектра железа.
Картинка ниже — это уже маркетинговый буллщит:
image
И обновление Firmware ко многим пройдет с нетривиальными действиями.
Например, через WinPE и запуска своего набора прошивальщиков firmware.
Это решение для внутреннего пользования. Список моделей ограничивается только тем, что нам требуется в данный момент.
Конечно, здесь речь не идет о поддержке абсолютно любого железа. В начале статьи указано, что решение придется адаптировать под каждый новый сервер (новый вендор или новая модель с отличающимся функционалом). Как правило, это не чаще раза в год.

Вы пытаетесь в пару сотен строк описать 30% бизнеса хостеров (бареметалл-хостеров). Как инсайдер говорю вам — там бездна. Чтобы сервера работали в режиме "заказал/установил/получил" нужны десятки тысяч строк кода (и это без учёта различий в моделях).


Потому что у вас там будет миллион нюансов настроек биосов сетевух, странных настроек драков, особенностей загрузки, порядка следования дисков на хвадварных/софтварных рейдах (никогда не пробовали загрузить сервер с диска № 112 так, чтобы граб не запутался где находится его миррор?). Это мы ещё не трогаем lifecycle management (прошивки, апдейты фирмварь и биосов) и т.д.

Это решение для внутреннего пользования.
Конечно, здесь речь не идет о поддержке абсолютно любого железа. Скорее о 4-5 вендорах, не более 10 моделей на каждого вендора.
Согласен, если говорить о поддержке гораздо более широкого перечня моделей и более широкого набора конечных образов систем, скорее всего, нужно будет смотреть в другую сторону.
Но данное решение хорошо вписывается в текущие потребности.

Забудьте про 10 моделей. Если вы планируете в бизнесе быть больше пары лет, вам надо поддерживать поколения железа. Даже если это моновендор.

В 2020 году читать такое — удивительно.
Х5 вроде как небедная контора, а инфраструктура как у школьного хостинга.
Рейды какие-то, пхе…
… когда можно просто купить НУТАНИКС.
В принципе, ваше удивление понятно. Но: решение бесплатное, обеспечивает текущие потребности и его в состоянии поддерживать 1 человек.
  1. Вы можете использовать grub вместо syslinux там же в PXE — открывает вам килотонны возможностей. Сможете делать rd.brake в дракуте, чтобы на пре-пивоте тормозить установку, диктовать дополнительные репо, делать иерархическое меню и вот это вот всё.
  2. Параметры не надо читать скриптами — это очень плохая практика. Вам надо написать %addon, втащить его в update.img и читать параметры с инклудов — в таком случае люди при установке смогут подправить что-то, если захотят через обычное меню Анаконды. В таком случае вы сможете на результирущем кикстарте после установки видеть параметры, если что пошло не по сценарию.
    С этой темой тяжело начать из-за говнокода RHEL, но если соберетесь, я покажу как сделать.
  3. У вас перегружен kickstart. Не надо там логику писать. Нужно подекларативнее немного подходить. Создайте аккуратно директорию, которая тоже войдет в update.img, в ней положите все свои скрипты (без шабангов и вызовов — только чтобы объявляли функции). И уже из кикстарта дергайте эти функции. Тогда все будет выглядеть наглядно. Например:

source /tmp/install/scripts/setup.toolset.sh

# Все эти функции ниже объявились при сурсе setup.toolset.sh
connectivity.check

utils.set_hostname
utils.set_motd
utils.set_product_file

repos.install epel satellite baseos
log.error "some message"

А сам setup.toolset.sh:


source /tmp/install/scripts/inc/logging.sh
source /tmp/install/scripts/inc/connectivity.sh
source /tmp/install/scripts/inc/disk.sh
source /tmp/install/scripts/inc/utils.sh
source /tmp/install/scripts/inc/packages.sh
source /tmp/install/scripts/inc/bitwarden.sh
source /tmp/install/scripts/inc/ansible.sh

Пример одного из перечисленных скриптов:


function log.error() { logger -t "ISO Builder" -- "$@"; echo "[ERROR] $@"; }
function log.warning() { logger -t "ISO Builder" -- "$@"; echo "[WARNING] $@"; }
function log.notice() { logger -t "ISO Builder" -- "$@"; echo "[NOTICE] $@"; }
function log.info() { logger -t "ISO Builder" -- "$@"; echo "[INFO] $@"; }
function log.debug() { if $debug; then echo "[DEBUG] $@"; fi }

Ну и мелкое замечание:


настроить BIOS

BIOS не существует. Вот уже лет 20 никто его в глаза не видел. Это UEFI в режиме обратной совместимости :-)

Спасибо за ваш комментарий, есть над чем подумать.
НЛО прилетело и опубликовало эту надпись здесь

бареметал — это основа для частного облака. Другой вопрос, что крупные вендоры вроде Cisco предлагают достаточно хорошие решения для бутстрапа.
Вот эпичная статья от КРОКа на эту тему https://habr.com/ru/company/croc/blog/472406/

Попробуйте FOG Project как решение для PXE. Пользую его для развертывания ОС (аналог MS WDS), загрузки linux live cd, антивирусных live cd etc.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.