ceph-opennebula-playbooks/README.md

51 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"Плейбуки" на баше для конфигурации 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
- И сделать, чтобы при подстановках проверялось, что никто не забыл установить подставляемые переменные
- Кстати, ещё были бы полезны функции работы с массивами - вывести через запятую, отфильтровать... - это
скорее всего вопрос либо к самому языку написания "плейбуков", либо к тому, что используется как шаблонизатор