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