--- # Каталог развёртывания на хосте (домашка root) deploy_dir: /root/sarex # Источник файлов — корень репозитория iac (playbook лежит в aero/) deploy_src_root: "{{ playbook_dir }}/.." # Домены верхнего nginx (попадают в .env и в SAN сертификата) platform_domain: sarex.local.lonsdaleites.ru admin_domain: admin.sarex.local.lonsdaleites.ru minio_domain: minio.sarex.local.lonsdaleites.ru # Самоподписанный TLS-сертификат cert_days: 365 cert_dir: "{{ deploy_dir }}/nginx/certs" # Переменные-пароли: им генерируются стойкие значения взамен слабых дефолтов. sarex_secret_vars: - K3S_TOKEN - GITEA_ADMIN_PASSWORD - SAREX_POSTGRES_PASSWORD - SAREX_DJANGO_DB_PASSWORD - SAREX_PROCESSING_DB_PASSWORD - SAREX_BIM_DB_PASSWORD - SAREX_WORKSPACE_DB_PASSWORD - SAREX_RABBITMQ_PASSWORD - SAREX_MINIO_ROOT_PASSWORD - SAREX_MINIO_APP_PASSWORD secret_length: 24 # Хранилище секретов на control-node (persist + переиспользование). Gitignored. secrets_store: "{{ playbook_dir }}/.secrets" # RSA-ключи JWT backend (RS512). Генерируются на control-node, persist в secrets_store. jwt_private_key_path: "{{ secrets_store }}/{{ inventory_hostname }}/jwt_private.pem" jwt_public_key_path: "{{ secrets_store }}/{{ inventory_hostname }}/jwt_public.pem" # Приватный реестр образов и ключ для входа (json_key) registry_host: cr.yandex registry_username: json_key # Windows: C:\Users\user\.ssh\local\authorized_key.json → в WSL это /mnt/c/... registry_key_src: /mnt/c/Users/user/.ssh/local/authorized_key.json # Поднимать стек (docker compose up -d). Требует запущенной службы docker и # docker login в cr.yandex — по умолчанию выключено. sarex_compose_up: false compose_cmd: "docker compose" # --- GitOps-подложка контура (k3s + gitea + vault + flux) ------------------- # Параметры gitea и Flux. Попадают в .env (их читает docker-compose) — менять # нужно здесь, а не в .env.example, иначе перезапишется при следующем деплое. gitea_admin_user: sarex gitea_admin_email: "{{ gitea_admin_user }}@{{ platform_domain }}" gitea_org: infra gitea_repo: iac # Ветка и путь, за которыми следит Flux внутри репозитория в gitea. aero_git_branch: master aero_flux_path: clusters/aero # Поднимается отдельно от прикладного стека: образы публичные, docker login в # cr.yandex не нужен. По умолчанию выключено, включает `uv run poe platform`. aero_platform_up: false # Волна 1: долгоживущие сервисы, которым нужно успеть стать healthy. # k3s-server при первом старте создаёт ./k3s/kubeconfig.yaml — его ждёт волна 2. aero_platform_services_wave1: - k3s-server - k3s-worker-1 - k3s-worker-2 - k3s-worker-3 - gitea # Волна 2: провижининг и bootstrap. gitea-init, flux-k8s-init и flux-bootstrap # одноразовые (restart: "no"), vault-init живёт постоянно и распечатывает Vault # после ребута хоста. aero_platform_services_wave2: - gitea-init - flux-k8s-init - vault - vault-init - flux-bootstrap # Ноды k3s. Каждой нужен свой каталог PVC-хранилища на хосте: провижинер # local-path node-local, и PV навсегда привязывается к ноде через nodeAffinity. aero_k3s_nodes: - server - worker-1 - worker-2 - worker-3 # Сколько ждать появления kubeconfig от k3s-server, секунд. aero_kubeconfig_timeout: 180 # Сервисы приложения, поднимаемые при sarex_compose_up (depends_on тянет # зависимости и порядок). k3s/gitea намеренно не поднимаем. sarex_services: # k3s + провижининг DNS-моста (нужны engine'у до старта) - k3s-server - processing-k8s-init - postgres - postgres-init - redis - rabbitmq - minio - minio-init - measurements - s3-proxy - backend - celery - frontend - processing-api - processing-frontend - engine - nginx