Docs/docs/09-ansible-playbooks.md
2026-03-23 23:43:26 +05:00

7.4 KiB
Raw Permalink Blame History

09. Ansible — плейбуки и запуск

🎯 Основной плейбук: olimp-deploy.yml

Это главный плейбук, который управляет развёртыванием всех сервисов. Он разбит на секции по группам хостов (определены в inventories/hosts). Каждая секция включает:

  • Загрузку секретов из vault.yml.
  • Применение ролей, специфичных для данной группы.
  • Использование тегов для гибкого запуска отдельных частей.

🧩 Структура плейбука

Плейбук последовательно обрабатывает группы хостов в следующем порядке:

  1. Все хосты, кроме Proxmox (all:!pve-server)

    • Роль base_setup — базовая настройка (пакеты, время, SSH-ключи).
    • Роль system_cleanup — удаление ненужных пакетов.
    • Роль promtail — агент сбора логов.
  2. Proxmox (pve-server)

    • Роль proxmox_base_setup — настройка Proxmox (репозитории, обновления).
    • Роль proxmox_monitoring — установка pve_exporter, node_exporter.
  3. Gateway (gateway-server)

    • Роль docker — установка Docker и Docker Compose.
    • Роль npm — Nginx Proxy Manager.
    • Роль heimdall — дашборд Heimdall.
    • (Роль dashy закомментирована, не используется.)
  4. Data (data-server)

    • Роль docker
    • Роль mealie — менеджер рецептов.
    • Роль bookstack — вики.
    • Роль bitwarden — менеджер паролей (Vaultwarden).
  5. Media (media-server)

    • Роль docker
    • Роль ampache — музыкальный стриминг.
    • Роль audiobookshelf — аудиокниги.
    • Роль calibre-web — веб-интерфейс для библиотеки Calibre.
    • Роль jellyfin — медиасервер.
    • Роль flibusta — зеркало библиотеки Флибуста.
  6. Photo (photo-server)

    • Роль docker
    • Роль immich — фотогалерея.
  7. Talk (talk-server)

    • Роль docker
    • Роль mumble — голосовой чат.
    • Роль snikket — XMPP-сервер.
    • (Роль teamspeak закомментирована.)
  8. Games (games-server)

    • Роль docker
    • (Роль minecraft закомментирована)
  9. Manage (manage-server)

    • Роль docker
    • Роль meshcentral — удалённое управление.
    • Роль grafana — визуализация метрик.
    • Роль lokiсбор и хранение логов.
  10. Git (git-server)

    • Роль docker
    • Роль gitlab — GitLab CE.
  11. Torrent (torrent-server)

    • Роль docker
    • Роль torrserver — стриминг торрентов.
    • Роль qbittorrent — торрент-клиент.
  12. Тестовый хост (testtalk-server)

    • Роль docker
    • Роль snikket (используется для тестирования).

🏷️ Теги

Каждая роль имеет тег, что позволяет запускать только её:

Тег Роль Назначение
deploy_base base_setup Базовая настройка
deploy_cleanup system_cleanup Очистка системы
deploy_promtail promtail Агент логов
deploy_proxmox_base proxmox_base_setup Настройка Proxmox
deploy_proxmox_monitoring proxmox_monitoring Мониторинг Proxmox
deploy_docker docker Установка Docker
deploy_npm npm Nginx Proxy Manager
deploy_heimdall heimdall Heimdall
deploy_mealie mealie Mealie
deploy_bookstack bookstack Bookstack
deploy_bitwarden bitwarden Bitwarden/Vaultwarden
deploy_ampache ampache Ampache
deploy_audiobookshelf audiobookshelf Audiobookshelf
deploy_calibre_web calibre-web Calibre Web
deploy_jellyfin jellyfin Jellyfin
deploy_flibusta flibusta Flibusta
deploy_immich immich Immich
deploy_mumble mumble Mumble
deploy_snikket snikket Snikket (XMPP)
deploy_meshcentral meshcentral MeshCentral
deploy_grafana grafana Grafana + VictoriaMetrics
deploy_loki loki Loki
deploy_gitlab gitlab GitLab
deploy_torrserver torrserver TorrServer
deploy_qbittorrent qbittorrent qBittorrent

🚀 Запуск плейбука

Полный запуск (все роли)

ansible-playbook olimp-deploy.yml --ask-vault-pass

Запуск только определённой роли (по тегу)

ansible-playbook olimp-deploy.yml --tags deploy_jellyfin --ask-vault-pass

Запуск на конкретном хосте

ansible-playbook olimp-deploy.yml --limit media-server --ask-vault-pass

Проверка синтаксиса

ansible-playbook olimp-deploy.yml --syntax-check

Сухой запуск (dry-run)

ansible-playbook olimp-deploy.yml --check --ask-vault-pass

📌 Примечания

  • Некоторые роли закомментированы (dashy, teamspeak, minecraft), так как они либо не используются, либо требуют дополнительной настройки.
  • Все роли, где есть секреты, используют vault.yml, поэтому обязательно указывать --ask-vault-pass или настроить vault_password_file.

Далее: Роли (roles)