[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 [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 " [[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"]