"Плейбуки" на баше для конфигурации Ceph + OpenNebula Почему на баше? Потому что с ансиблом бесит yaml программирование! Хотя на баше, конечно, тоже не совсем красиво местами. Логика та же: можно запускать многократно. Переменные указываются в файле config/all_vars (предполагается, что он подключается из другого репозитория), пример - в all_vars.sample. В config/inventory/ перечисляются хосты, на которых это выполняется. Имя каждого файла должно быть равно соответствующему hostname, внутри файла должны быть две переменные play_host="внешний ip" и int_ip="внутренний ip" (пример наполнения в inventory_host.sample). ## Готово + Вынести в отдельный скрипт настройку ssh-ключей на нодах + ethtool -C eth10g rx-usecs 0 + systemctl mask emergency.service, systemctl mask emergency.target + На все ноды поставить qemu 4.x из sid (там virtio-blk discard=unmap умеет) + Переименовать сеть в eth1gX + eth10gX (X=1,2), иначе имена сетевых интерфейсов едут при перестановке NVMe-шек + Настроить live миграцию при reschedule: https://github.com/OpenNebula/one/blob/612300b191224b172fa4511845f2a17faa5f547c/src/scheduler/etc/sched.conf#L99 + Везде убрать DHCP + Удалять network-manager + Везде прописать все ноды в /etc/hosts + В known_hosts также добавлять внутренние IP + Добавить passwordless ssh от рута между всеми серверами (чисто для удобства, oneadmin и так есть) + Шаблонизировать mon_initial_members в ceph.conf + Добавить аналог inventory (перечень хостов с их переменными) и на него пересадить генерацию /etc/hosts ## TODO - sensors & sensors-exporter - Убрать quiet из опций GRUB - Мониторинг и алерты - пока Prometheus+Grafana настроены вручную на 172.31.1.13 ("подоконник") - Написать отдельно скрипты для начальной настройки кластера (создание ceph-deploy, создание пулов в цефе, подключение датастора к opennebula). Оные выполняются только один раз на весь кластер, поэтому отдельно. - Сделать на всех хостах LACP из 2x 10GbE сетевых интерфейсов - Попробовать технологизировать "баш-плейбуки". Нужно не так много вещей, но некоторые могли бы быть действительно полезны, например: - Функция вида: Скопировать файл на хост и в зависимости от того, отличался ли он до этого, выполнить команду/команды - Аналог ansible lineinfile - проверить наличие строки/строк в файле и добавить, если их там нет. В вариантах "просто слить два файла построчно в любом порядке" и "заменить строчку, удовлетворяющую регэкспу" - Полечить отступы в heredoc (в баше вложенные heredoc ломаются с отступами) - Можно даже попробовать сделать всё это не на баше, но пока что баш выглядит проще всего, на то и шелл - команды дёргать - Придумать, на чём красивее шаблонизировать конфиги (НО ТОЛЬКО НЕ НА JINJA!!!) - пока что это вообще envsubst - И сделать, чтобы при подстановках проверялось, что никто не забыл установить подставляемые переменные - Кстати, ещё были бы полезны функции работы с массивами - вывести через запятую, отфильтровать... - это скорее всего вопрос либо к самому языку написания "плейбуков", либо к тому, что используется как шаблонизатор