iac/aero/pyproject.toml
emelinda 6244a05c19 Wire backend to processing-api, provision workflow_db extensions, add deploy automation
- backend/celery: WORKFLOWS_USE/HOST/BASE_HOST/PREFIX -> processing-api
  (WORKFLOWSSETTINGS builds COMPARISON/DOCUMENTATION/PDM_FILES URLs)
- postgres-init: create uuid-ossp/ltree/hstore in workflow_db as superuser
  (processing role lacks CREATE EXTENSION) - fixes workflows-api migration
- sarex_stack: handlers recreate nginx / backend+celery when their mounted
  configs change (docker compose up -d does not detect bind-mount edits)
- poe: operational tasks up/ps/pull/logs/restart on the host
2026-07-24 18:22:02 +03:00

91 lines
3.9 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[project]
name = "aero"
version = "0.1.0"
description = "Ansible-провижининг docker-хостов (docker, docker-compose, containerd)"
requires-python = ">=3.11"
dependencies = [
"ansible-core>=2.17",
]
[dependency-groups]
dev = [
"ansible-lint>=24.0",
"poethepoet>=0.29",
]
[tool.uv]
package = false
# Общее окружение для всех poe-задач.
# ANSIBLE_CONFIG задаётся явно: на /mnt/c (диск Windows) права 0777, и ansible
# из соображений безопасности игнорирует ansible.cfg в world-writable каталоге.
[tool.poe.env]
ANSIBLE_CONFIG = "${POE_ROOT}/ansible.cfg"
UV_LINK_MODE = "copy"
# Таск-раннер poethepoet. Запуск: uv run poe <task>
[tool.poe.tasks]
sync = "uv sync"
galaxy = "ansible-galaxy collection install -r requirements.yml"
ping = "ansible docker_hosts -m ping"
# Провижининг хоста: базовые пакеты + docker/containerd + запуск службы
provision = "ansible-playbook site.yml"
check = "ansible-playbook site.yml --check --diff"
# Деплой конфигурации: файлы, .env с паролями, сертификаты, docker login
deploy = "ansible-playbook deploy.yml"
deploy-check = "ansible-playbook deploy.yml --check --diff"
# Деплой + поднять стек приложения (docker compose up -d)
stack = "ansible-playbook deploy.yml -e sarex_compose_up=true"
# Только генерация паролей и рендер .env на хосте (без копирования/сертификатов)
gen-env = "ansible-playbook deploy.yml --tags env"
# docker login в приватный реестр по ключу json_key
login = "ansible-playbook deploy.yml --tags login"
# Сгенерировать логин+пароль и создать Django-суперпользователя в backend
superuser = "ansible-playbook deploy.yml -e sarex_create_superuser=true --tags superuser"
lint = "ansible-lint"
# --- Операционные задачи на хосте (без полного деплоя) ----------------------
# Поднять/пересоздать сервисы приложения (docker compose up -d sarex_services).
# Только тег up: не трогает файлы/.env/сертификаты/login, лишь применяет стек.
up = "ansible-playbook deploy.yml -e sarex_compose_up=true --tags up"
[tool.poe.tasks.ps]
cmd = "ansible docker_hosts -m ansible.builtin.shell -a 'docker compose ps chdir=/root/sarex'"
help = "Статус стека на хосте (docker compose ps)"
[tool.poe.tasks.pull]
cmd = "ansible docker_hosts -m ansible.builtin.shell -a 'docker compose pull ${service} chdir=/root/sarex'"
help = "Стянуть образы: uv run poe pull [service]"
[[tool.poe.tasks.pull.args]]
name = "service"
positional = true
default = ""
[tool.poe.tasks.logs]
cmd = "ansible docker_hosts -m ansible.builtin.shell -a 'docker compose logs --no-color --tail ${tail} ${service} chdir=/root/sarex'"
help = "Логи сервиса(ов): uv run poe logs [service] [--tail N]"
[[tool.poe.tasks.logs.args]]
name = "service"
positional = true
default = ""
[[tool.poe.tasks.logs.args]]
name = "tail"
options = ["--tail"]
default = "80"
[tool.poe.tasks.restart]
cmd = "ansible docker_hosts -m ansible.builtin.shell -a 'docker compose restart ${service} chdir=/root/sarex'"
help = "Перезапустить сервис: uv run poe restart <service>"
[[tool.poe.tasks.restart.args]]
name = "service"
positional = true
required = true
# Подготовка окружения: uv sync + установка коллекций
[tool.poe.tasks.setup]
sequence = ["sync", "galaxy"]
# Установка с чистого листа: окружение → docker → деплой+стек → суперпользователь
[tool.poe.tasks.install]
sequence = ["sync", "galaxy", "provision", "stack", "superuser"]