Docs/docs/09-ansible-variables.md
2026-03-23 23:02:38 +05:00

50 KiB
Raw Blame History

09. Ansible — переменные и окружение

🎯 Общие сведения

Переменные в этом репозитории разделены по уровням:

  • Глобальные — определены в group_vars/all.yml и применяются ко всем хостам.
  • Рольные — могут переопределяться внутри ролей (в defaults/main.yml или vars/main.yml), но в основном используются глобальные для единообразия.
  • Секретные — вынесены в vault.yml (зашифрованы) и подставляются через переменные вида {{ vault_* }}.

Файл group_vars/all.yml структурирован по разделам, каждый из которых отвечает за определённую группу настроек. Ниже приведено подробное описание каждой переменной.


🌍 Общие настройки

Переменная Тип Значение / Пример Назначение Используется в ролях
timezone string Asia/Yekaterinburg Часовой пояс системы. base_setup
system_locale string ru_RU.UTF-8 Локаль системы. base_setup
x11_display_host string 192.168.1.101 Хост для X11-проброса (используется редко). (не используется в текущих ролях)
admin_user string root Пользователь, от имени которого выполняются административные задачи. base_setup, proxmox_base_setup
base_packages list [curl, wget, ...] Список базовых пакетов, устанавливаемых на всех хостах. base_setup
custom_directories list [/opt/scripts, /etc/apt/keyrings] Каталоги, которые необходимо создать на каждом хосте. base_setup
ssh_public_keys list список публичных ключей SSH-ключи для доступа к хостам (добавляются в authorized_keys). base_setup
cleanup_packages list [gparted] Пакеты, которые нужно удалить (устаревшие или ненужные). system_cleanup

🌐 Сетевые настройки

Переменная Тип Значение Назначение
server_ips dict olimp: 192.168.1.200 и т.д. Словарь с IP-адресами всех сервисных хостов. Используется для ссылок в других переменных.

Эти IP используются для настройки мониторинга (списки хостов для Node Exporter, Promtail), а также для указания расположения сервисов (например, в qbittorrent_shares ссылки на SMB-шары).


📊 Мониторинг и логирование

Порты

Переменная Значение Назначение
monitoring_ports.node_exporter 9100 Порт Node Exporter.
monitoring_ports.proxmox_exporter 9223 Порт Proxmox Exporter.
monitoring_ports.vmagent 8429 Порт VMagent (VictoriaMetrics agent).
monitoring_ports.victoriametrics 8428 Порт VictoriaMetrics.
monitoring_ports.loki 3100 Порт Loki.
monitoring_ports.promtail 9080 Порт Promtail.

Группы серверов для мониторинга

Переменная Значение (пример) Назначение
monitoring_groups.node_exporter_servers список IP-адресов всех хостов, кроме, возможно, некоторых Хосты, на которых запускается Node Exporter (роль proxmox_monitoring и др.).
monitoring_groups.proxmox_servers [{{ server_ips.olimp }}] Хосты Proxmox, для которых нужен Proxmox Exporter.
monitoring_groups.promtail_servers список IP-адресов (все, кроме Proxmox) Хосты, на которых запускается Promtail для сбора логов.

Proxmox Exporter

Переменная Значение Назначение
pve_exporter_user pve_exporter@pve Пользователь в Proxmox для экспорта метрик.
pve_exporter_token_name grafana Имя токена для доступа.
pve_exporter_token_value {{ vault_pve_exporter_token }} Токен (секрет) для аутентификации. Хранится в vault.

VictoriaMetrics и Grafana

Переменная Значение Назначение
victoriametrics_retention_months 2 Срок хранения метрик (месяцев).
victoriametrics_version v1.101.0 Версия VictoriaMetrics.
grafana_version 11.2.0 Версия Grafana.
grafana_admin_user admin Имя администратора Grafana.
grafana_admin_password {{ vault_grafana_admin_password }} Пароль администратора (vault).
grafana_root_url https://mon.zailon.ru Внешний URL для доступа к Grafana.

Loki

Переменariable Значение Назначение
loki_version 2.9.2 Версия Loki.
loki_retention_days 30 Срок хранения логов (дней).

cAdvisor

Переменная Значение Назначение
cadvisor_enabled true Включает развёртывание cAdvisor.
cadvisor_base_dir /opt/cadvisor Базовый каталог для данных cAdvisor.
cadvisor_port 8080 Порт cAdvisor.

🚪 Сервисы Gateway (хост 192.168.1.201)

Переменная Значение Назначение Роль
npm_base_dir /opt/npm Базовый каталог Nginx Proxy Manager. npm
npm_data_dir /opt/npm/data Каталог данных NPM. npm
npm_letsencrypt_dir /opt/npm/letsencrypt Каталог сертификатов Let's Encrypt. npm
heimdall_base_dir /opt/heimdall Базовый каталог Heimdall. heimdall
heimdall_config_dir /opt/heimdall/config Каталог конфигурации Heimdall. heimdall
heimdall_port 45131 Порт Heimdall (проброшен на хост). heimdall
dashy_base_dir /opt/dashy Базовый каталог Dashy (архивная роль, не используется). arhive_roles/dashy
dashy_config_dir /opt/dashy/config Конфигурация Dashy. arhive_roles/dashy
dashy_port 45132 Порт Dashy. arhive_roles/dashy
dashy_domain start.zailon.ru Домен для Dashy. arhive_roles/dashy

💾 Сервисы Data (хост 192.168.1.202)

Bitwarden (Vaultwarden)

Переменная Значение Назначение Роль
bitwarden_base_dir /mnt/bitwarden Базовый каталог. bitwarden
bitwarden_data_dir /mnt/bitwarden/vw-data Каталог данных. bitwarden
bitwarden_port 45131 Порт веб-интерфейса. bitwarden
bitwarden_admin_token {{ vault_bitwarden_admin_token }} Токен для админ-панели (vault). bitwarden
bitwarden_websocket_enabled true Включить WebSocket для уведомлений. bitwarden
bitwarden_signups_allowed false Разрешить регистрацию новых пользователей. bitwarden
bitwarden_smtp_host smtp.mail.ru SMTP-сервер для отправки писем. bitwarden
bitwarden_smtp_port 465 Порт SMTP. bitwarden
bitwarden_smtp_ssl true Использовать SSL/TLS для SMTP. bitwarden
bitwarden_smtp_username zailon@bk.ru Логин для SMTP. bitwarden
bitwarden_smtp_password {{ vault_bitwarden_smtp_password }} Пароль для SMTP (vault). bitwarden
bitwarden_smtp_from zailon@bk.ru Адрес отправителя. bitwarden
bitwarden_domain https://bw.zailon.ru Внешний домен Bitwarden. bitwarden

Mealie

Переменная Значение Назначение Роль
mealie_base_dir /mnt/mealie Базовый каталог. mealie
mealie_data_dir /mnt/mealie/data Каталог данных. mealie
mealie_port 45132 Порт. mealie
mealie_db_type sqlite Тип базы данных (sqlite/postgresql). mealie
mealie_db_password {{ vault_mealie_db_password }} Пароль для базы данных (если используется postgres). mealie

Bookstack

Переменная Значение Назначение Роль
bookstack_base_dir /mnt/bookstack Базовый каталог. bookstack
bookstack_config_dir /mnt/bookstack/config Конфигурация. bookstack
bookstack_uploads_dir /mnt/bookstack/uploads Загруженные файлы. bookstack
bookstack_db_dir /mnt/bookstack/db Каталог базы данных (SQLite). bookstack
bookstack_port 45133 Порт. bookstack

🎬 Сервисы Media (хост 192.168.1.203)

Общая переменная service_config_base: "/mnt/service" используется для всех ролей этого хоста.

Jellyfin

Переменная Значение Назначение Роль
jellyfin_base_dir {{ service_config_base }}/jellyfin Базовый каталог. jellyfin
jellyfin_config_dir {{ jellyfin_base_dir }}/config Конфигурация. jellyfin
jellyfin_cache_dir {{ jellyfin_base_dir }}/cache Кэш. jellyfin
jellyfin_logs_dir {{ jellyfin_base_dir }}/logs Логи. jellyfin
jellyfin_media_path /mnt/video Путь к медиафайлам (видео). jellyfin
jellyfin_port 45131 Порт. jellyfin
jellyfin_hw_acceleration true Включить аппаратное ускорение (VAAPI). jellyfin

Audiobookshelf

Переменная Значение Назначение Роль
audiobookshelf_base_dir {{ service_config_base }}/audiobookshelf Базовый каталог. audiobookshelf
audiobookshelf_config_dir {{ audiobookshelf_base_dir }}/config Конфигурация. audiobookshelf
audiobookshelf_db_dir {{ audiobookshelf_base_dir }}/db Каталог базы данных. audiobookshelf
audiobookshelf_port 45132 Порт. audiobookshelf

Calibre Web

Переменная Значение Назначение Роль
calibre_base_dir {{ service_config_base }}/calibre Базовый каталог. calibre-web
calibre_library_dir /mnt/books/calibre Каталог библиотеки Calibre. calibre-web
calibre_config_dir {{ calibre_base_dir }}/config Конфигурация. calibre-web
calibre_web_port 45133 Порт. calibre-web
calibre_web_db_path {{ calibre_config_dir }}/app.db Путь к файлу базы данных. calibre-web
calibre_web_enable_uploading true Разрешить загрузку книг. calibre-web
calibre_web_enable_conversion true Разрешить конвертацию книг. calibre-web
calibre_web_enable_registration false Разрешить регистрацию новых пользователей. calibre-web
calibre_web_enable_webdav true Включить WebDAV. calibre-web
calibre_web_enable_opds true Включить OPDS-каталог. calibre-web

Ampache

Переменная Значение Назначение Роль
ampache_base_dir {{ service_config_base }}/ampache Базовый каталог. ampache
ampache_config_dir {{ ampache_base_dir }}/config Конфигурация. ampache
ampache_logs_dir {{ ampache_base_dir }}/logs Логи. ampache
ampache_mysql_dir {{ ampache_base_dir }}/mysql Каталог MySQL (данные). ampache
ampache_port 45134 Порт. ampache

Flibusta (Z-Library зеркало)

Переменная Значение Назначение Роль
flibusta_base_dir /mnt/service/flibusta Базовый каталог. flibusta
flibusta_source_archives_dir /mnt/books/flibusta Каталог с архивами книг (исходные данные). flibusta
flibusta_web_port 45137 Порт веб-интерфейса. flibusta
flibusta_db_port 45138 Порт базы данных (PostgreSQL). flibusta
flibusta_db_user flibusta Пользователь БД. flibusta
flibusta_db_password {{ vault_flibusta_db_password }} Пароль БД (vault). flibusta
flibusta_db_name flibusta Имя базы данных. flibusta

📸 Сервисы Photo (хост 192.168.1.204)

Immich

Переменная Значение Назначение Роль
immich_base_dir /mnt/immich Базовый каталог. immich
immich_port 45131 Порт веб-интерфейса. immich
immich_db_username postgres Пользователь PostgreSQL. immich
immich_db_password {{ vault_immich_db_password }} Пароль БД (vault). immich
immich_db_name immich Имя БД. immich
immich_version release Версия Immich (release последняя стабильная). immich

💬 Сервисы Talk (хост 192.168.1.206)

Mumble

Переменная Значение Назначение Роль
mumble_base_dir /mnt/mumble Базовый каталог. mumble
mumble_data_dir {{ mumble_base_dir }}/data Данные. mumble
mumble_port 45131 Порт клиентского подключения. mumble
mumble_ice_port 6502 Порт ICE (интерфейс управления). mumble
mumble_max_users 100 Максимальное количество пользователей. mumble
mumble_server_password {{ vault_mumble_server_password }} Пароль для доступа к серверу (если требуется). mumble
mumble_superuser_password {{ vault_mumble_superuser_password }} Пароль суперпользователя (vault). mumble

Matrix (Synapse) архивная роль

Переменные для Matrix находятся в arhive_roles/matrix. Мы их перечислим кратко, так как роль не используется.

Переменная Значение Назначение
matrix_base_dir /mnt/matrix Базовый каталог.
matrix_data_dir /mnt/matrix/data Данные Synapse.
matrix_config_dir /mnt/matrix/config Конфигурация.
matrix_media_dir /mnt/matrix/media Медиафайлы.
matrix_postgres_dir /mnt/matrix/postgres Данные PostgreSQL.
matrix_port 45132 Порт.
matrix_domain matrix.zailon.ru Домен.
matrix_server_name matrix.zailon.ru Имя сервера.
matrix_registration_enabled false Разрешена регистрация.
matrix_postgres_user synapse Пользователь БД.
matrix_postgres_password {{ vault_matrix_postgres_password }} Пароль БД.
matrix_postgres_db synapse Имя БД.
matrix_synapse_secret {{ vault_matrix_synapse_secret }} Секрет.
matrix_macaroon_secret {{ vault_matrix_macaroon_secret }} Секрет.
matrix_form_secret {{ vault_matrix_form_secret }} Секрет.

Snikket (XMPP)

Переменная Значение Назначение Роль
snikket_base_dir /mnt/snikket Базовый каталог. snikket
snikket_data_dir /mnt/snikket/snikket_data Данные сервера. snikket
snikket_nginx_custom_dir /mnt/snikket/nginx-custom Кастомные настройки nginx. snikket
snikket_backup_dir /backup/snikket Каталог резервных копий. snikket
snikket_domain chat.zailon.ru Домен XMPP-сервера. snikket
snikket_admin_email zailon@bk.ru Email администратора. snikket
snikket_external_ip 188.73.191.202 Внешний IP сервера (для TURN). snikket
snikket_http_port 8080 HTTP-порт. snikket
snikket_https_port 8443 HTTPS-порт. snikket
snikket_xmpp_port 5222 XMPP-порт (клиент). snikket
snikket_component_port 5349 Порт для компонентов. snikket
snikket_turn_port 3478 TURN-порт. snikket
snikket_turn_tls_port 5349 TURN с TLS. snikket
snikket_rtp_min_port 50000 Минимальный порт RTP. snikket
snikket_rtp_max_port 50100 Максимальный порт RTP. snikket
snikket_enable_acme false Отключить автоматические сертификаты ACME. snikket
snikket_disable_tls true Отключить TLS (используется прокси nginx). snikket
snikket_trusted_proxy * Доверенные прокси. snikket
snikket_max_file_size 500M Максимальный размер файла. snikket
snikket_image_tag dev Тег образа Snikket (dev последняя dev-версия). snikket
snikket_create_initial_invite false Не создавать приглашение автоматически. snikket
snikket_backup_enabled true Включить автоматическое резервное копирование. snikket
snikket_backup_retention_days 30 Хранить бэкапы 30 дней. snikket
snikket_admin_password {{ vault_snikket_admin_password }} Пароль администратора (vault). snikket
snikket_invite_token {{ vault_snikket_invite_token }} Токен для приглашений (vault). snikket

TeamSpeak

Переменная Значение Назначение Роль
teamspeak_base_dir /mnt/teamspeak Базовый каталог. teamspeak
teamspeak_data_dir /mnt/teamspeak/data Данные сервера. teamspeak
teamspeak_logs_dir /mnt/teamspeak/logs Логи. teamspeak
teamspeak_query_port 10011 Порт Query API. teamspeak
teamspeak_voice_port 9987 Голосовой порт (UDP). teamspeak
teamspeak_file_port 30033 Порт передачи файлов. teamspeak

🎮 Сервисы Games (хост 192.168.1.207)

Minecraft

Переменная Значение Назначение Роль
minecraft_base_dir /mnt/minecraft Базовый каталог. minecraft
minecraft_data_dir /mnt/minecraft/data Данные сервера. minecraft
minecraft_port 25565 Игровой порт. minecraft
minecraft_memory 4G Выделяемая память. minecraft
minecraft_version 1.21.1 Версия Minecraft. minecraft
minecraft_neoforge_version 21.1.0 Версия NeoForge (моды). minecraft
minecraft_type NEOFORGE Тип сервера (Vanilla/Forge/NeoForge). minecraft
minecraft_eula true Принятие EULA. minecraft
minecraft_motd Minecraft @ zailon.ru Текст MOTD. minecraft
minecraft_online_mode true Проверка лицензий. minecraft
minecraft_mods список URL-адресов модов Список модов для загрузки. minecraft

🛠️ Сервисы Manage (хост 192.168.1.208)

MeshCentral

Переменная Значение Назначение Роль
meshcentral_base_dir /opt/meshcentral Базовый каталог. meshcentral
meshcentral_data_dir /mnt/mesh/meshcentral-data Данные. meshcentral
meshcentral_files_dir /mnt/mesh/meshcentral-files Файлы. meshcentral
meshcentral_backup_dir /mnt/mesh/meshcentral-backup Бэкапы. meshcentral
meshcentral_port 45131 Порт веб-интерфейса. meshcentral

Grafana

Переменная Значение Назначение Роль
grafana_base_dir /mnt/grafana Базовый каталог. grafana
grafana_data_dir /mnt/grafana/data Данные Grafana. grafana
grafana_config_dir /mnt/grafana/config Конфигурация. grafana
grafana_vm_data_dir /mnt/grafana/victoriametrics Данные VictoriaMetrics. grafana
grafana_vmagent_tmp_dir /mnt/grafana/vmagent/tmp Временная директория VMagent. grafana
grafana_vmagent_config /mnt/grafana/vmagent/vmagent.yaml Конфиг VMagent. grafana
grafana_port 45132 Порт Grafana. grafana

Loki

Переменная Значение Назначение Роль
loki_base_dir /mnt/loki Базовый каталог. loki
loki_config_dir /mnt/loki/config Конфигурация. loki
loki_data_dir /mnt/loki/data Данные Loki. loki
loki_server_host {{ server_ips.manage }} IP-адрес, на котором слушает Loki. loki
loki_server_port {{ monitoring_ports.loki }} Порт Loki. loki

Promtail

Переменная Значение Назначение Роль
promtail_config_dir /etc/promtail Каталог конфигурации Promtail. promtail
promtail_data_dir /var/lib/promtail Данные Promtail (позиции). promtail

📦 Сервисы Git (хост 192.168.1.209)

GitLab

Переменная Значение Назначение Роль
gitlab_base_dir /mnt/git Базовый каталог. gitlab
gitlab_config_dir /mnt/git/config Конфигурация GitLab. gitlab
gitlab_logs_dir /mnt/git/logs Логи. gitlab
gitlab_data_dir /mnt/git/data Данные (репозитории, база данных). gitlab
gitlab_backup_dir /mnt/git/backup Резервные копии. gitlab
gitlab_http_port 45130 HTTP-порт (внешний). gitlab
gitlab_ssh_port 2222 SSH-порт для git-операций. gitlab
gitlab_version 17.5.5-ce.0 Версия GitLab CE. gitlab
gitlab_hostname git.zailon.ru Внутреннее имя хоста. gitlab
gitlab_external_url https://git.zailon.ru Внешний URL. gitlab
gitlab_root_password {{ vault_gitlab_root_password }} Пароль root (vault). gitlab

🧲 Сервисы Torrent (хост 192.168.1.211)

qBittorrent

Переменная Значение Назначение Роль
qbittorrent_base_dir /mnt/service/qbittorrent Базовый каталог. qbittorrent
qbittorrent_config_dir /mnt/service/qbittorrent/appdata Конфигурация. qbittorrent
qbittorrent_downloads_dir /mnt/service/qbittorrent/downloads Каталог загрузок (локальный). qbittorrent
qbittorrent_puid 1000 ID пользователя для контейнера. qbittorrent
qbittorrent_pgid 1003 ID группы. qbittorrent
qbittorrent_port_webui 8080 Порт веб-интерфейса. qbittorrent
qbittorrent_port_torrent 6881 Порт для торрент-трафика. qbittorrent
qbittorrent_smb_credentials_dir /etc/smb-creds Каталог для файлов с учетными данными SMB. qbittorrent

SMB-учетные данные:

Переменная Значение Назначение
qbittorrent_smb_creds.olimp.username Olimp Логин для шары Olimp.
qbittorrent_smb_creds.olimp.password {{ vault_smb_olimp_password }} Пароль (vault).
qbittorrent_smb_creds.olimp.file olimp Имя файла с креденшелами.
qbittorrent_smb_creds.qb.username qb Логин для шары qb.
qbittorrent_smb_creds.qb.password {{ vault_samba_password_qb }} Пароль (vault).
qbittorrent_smb_creds.qb.file qb Имя файла.

SMB-шары (монтируемые):
Переменная qbittorrent_shares — список словарей с параметрами монтирования. Каждый элемент содержит:

  • name — название (используется в пути монтирования).
  • src — UNC-путь к шаре.
  • dest — точка монтирования в контейнере.
  • credential — ссылка на учётные данные (olimp или qb).
  • opts — параметры монтирования.

Эти шары монтируются на хост через fstab (роль qbittorrent обеспечивает это) и затем пробрасываются в контейнер.

TorrServer

Переменная Значение Назначение Роль
torrserver_base_dir /mnt/service/torrserver Базовый каталог. torrserver
torrserver_config_dir /mnt/service/torrserver/config Конфигурация. torrserver
torrserver_torrents_dir /mnt/service/torrserver/torrents Каталог с торрент-файлами. torrserver
torrserver_port 45132 Порт веб-интерфейса. torrserver

🔐 Секретные переменные (vault)

Переменные, начинающиеся с vault_, хранятся в зашифрованном файле vault.yml. Они используются в вышеперечисленных ролях. Для редактирования используется команда:

ansible-vault edit vault.yml

Пароль vault должен быть известен администратору.

Список vault-переменных (не включая их значения):

  • vault_pve_exporter_token
  • vault_grafana_admin_password
  • vault_bitwarden_admin_token
  • vault_bitwarden_smtp_password
  • vault_mealie_db_password
  • vault_flibusta_db_password
  • vault_immich_db_password
  • vault_mumble_server_password
  • vault_mumble_superuser_password
  • vault_matrix_postgres_password
  • vault_matrix_synapse_secret
  • vault_matrix_macaroon_secret
  • vault_matrix_form_secret
  • vault_snikket_admin_password
  • vault_snikket_invite_token
  • vault_gitlab_root_password
  • vault_smb_olimp_password
  • vault_samba_password_qb

📌 Примечания

  • Большинство переменных предназначены для использования в шаблонах Docker Compose (файлы docker-compose.yml.j2). В них переменные подставляются через Jinja2.
  • Для мониторинга используются группы хостов, заданные через IP-адреса, что позволяет гибко настраивать, какие сервисы мониторить.
  • Все пути к данным вынесены в переменные, что облегчает миграцию на другое хранилище при необходимости.
  • Переменные, связанные с портами, используют схему: для каждого сервиса выделен уникальный порт в диапазоне 451xx, чтобы избежать конфликтов при пробросе на хост.

🔗 Исходные файлы

  • group_vars/all.yml — полный файл с переменными.
  • vault.yml — зашифрованный файл с секретами (требуется пароль).

Плейбуки и запуск*