ceph-opennebula-playbooks/README.md

51 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2020-02-04 02:46:43 +03:00
"Плейбуки" на баше для конфигурации Ceph + OpenNebula
2020-02-05 17:27:09 +03:00
Почему на баше? Потому что с ансиблом бесит yaml программирование!
2020-02-04 02:46:43 +03:00
2020-02-05 17:27:09 +03:00
Хотя на баше, конечно, тоже не совсем красиво местами.
2020-02-04 02:46:43 +03:00
Логика та же: можно запускать многократно.
2020-02-05 17:27:09 +03:00
2020-02-05 17:33:51 +03:00
Переменные указываются в файле config/all_vars (предполагается, что он подключается из другого репозитория),
пример - в all_vars.sample.
2020-02-05 17:27:09 +03:00
2020-06-20 12:48:13 +03:00
В config/inventory/ перечисляются хосты, на которых это выполняется. Имя каждого файла должно быть равно
соответствующему hostname, внутри файла должны быть две переменные play_host="внешний ip" и int_ip="внутренний ip"
(пример наполнения в inventory_host.sample).
2020-03-16 21:13:07 +03:00
## Готово
2020-02-05 17:27:09 +03:00
2020-03-06 18:05:08 +03:00
+ Вынести в отдельный скрипт настройку ssh-ключей на нодах
2020-03-16 13:49:27 +03:00
+ 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
2020-03-16 21:13:07 +03:00
+ Везде убрать DHCP
+ Удалять network-manager
+ Везде прописать все ноды в /etc/hosts
2020-03-18 15:38:43 +03:00
+ В known_hosts также добавлять внутренние IP
+ Добавить passwordless ssh от рута между всеми серверами (чисто для удобства, oneadmin и так есть)
2020-06-18 20:39:10 +03:00
+ Шаблонизировать mon_initial_members в ceph.conf
2020-06-20 12:48:13 +03:00
+ Добавить аналог inventory (перечень хостов с их переменными) и на него пересадить генерацию /etc/hosts
2020-03-16 21:13:07 +03:00
## TODO
- sensors & sensors-exporter
- Убрать quiet из опций GRUB
2020-02-05 17:27:09 +03:00
- Мониторинг и алерты - пока Prometheus+Grafana настроены вручную на 172.31.1.13 ("подоконник")
- Написать отдельно скрипты для начальной настройки кластера (создание ceph-deploy, создание пулов в цефе,
подключение датастора к opennebula). Оные выполняются только один раз на весь кластер, поэтому отдельно.
2020-02-05 17:36:27 +03:00
- Сделать на всех хостах LACP из 2x 10GbE сетевых интерфейсов
2020-02-05 17:27:09 +03:00
- Попробовать технологизировать "баш-плейбуки". Нужно не так много вещей, но некоторые могли
2020-02-05 17:45:02 +03:00
бы быть действительно полезны, например:
- Функция вида: Скопировать файл на хост и в зависимости от того, отличался ли он до этого, выполнить команду/команды
2020-02-05 17:27:09 +03:00
- Аналог ansible lineinfile - проверить наличие строки/строк в файле и добавить, если их там нет.
В вариантах "просто слить два файла построчно в любом порядке" и "заменить строчку, удовлетворяющую регэкспу"
2020-02-05 17:45:02 +03:00
- Полечить отступы в heredoc (в баше вложенные heredoc ломаются с отступами)
- Можно даже попробовать сделать всё это не на баше, но пока что баш выглядит проще всего, на то и шелл - команды дёргать
- Придумать, на чём красивее шаблонизировать конфиги (НО ТОЛЬКО НЕ НА JINJA!!!) - пока что это вообще envsubst
2020-02-05 17:27:09 +03:00
- И сделать, чтобы при подстановках проверялось, что никто не забыл установить подставляемые переменные
2020-02-05 17:45:02 +03:00
- Кстати, ещё были бы полезны функции работы с массивами - вывести через запятую, отфильтровать... - это
скорее всего вопрос либо к самому языку написания "плейбуков", либо к тому, что используется как шаблонизатор