diff --git a/docs/backlog/README.md b/docs/backlog/README.md index a85dcf9..ddc03d7 100644 --- a/docs/backlog/README.md +++ b/docs/backlog/README.md @@ -31,7 +31,6 @@ _(sec-ревью)_ — три независимых security-ревью на м - [Gitea runner on-demand в Yandex Cloud](gitea-runner-on-demand.md) — раннер активен только во время сборки; webhook→Cloud Function стартует ВМ, probe/decide гасят по idle; экономия ~95% - [Синхронизация общих Ansible-ролей между репозиториями](shared-roles-sync.md) — `owner`/`eget`/`secrets` дублируются между репозиториями и дрейфуют; канон в ansible-shared + rsync-таски invoke - [Уведомления о размере приложений и заполнении диска](disk-usage-alerts.md) — алерты на заполнение диска и аномальный рост data-томов; сервер ресурсно ограничен _(tududi)_ -- [Handlers рестарта для оставшихся приложений](handlers-remaining-apps.md) — apprise/dashboard/transcriber/miniflux монтируют конфиг в контейнер, но рестарта нет вовсе; правка конфига не подхватывается - [Composable-роль `backup`](ansible-backup-role.md) — бэкап — самый чистый шов для extraction (одинаков у всех, различается только список targets) _(ансибл-ревью)_ - [Вывести из оборота секреты с широкими правами](narrow-secret-scopes.md) — `yc_oauth_token` (весь аккаунт Yandex Cloud) уже выведен; осталось проставить радиус остальным переменным vault и сузить широкие - [outline: секреты из файлов](secrets-file-outline.md) — умеет generic `_FILE` для всех пяти секретов; единственное приложение, где выносится вообще всё, включая пароль БД diff --git a/playbook-caddyproxy.yml b/playbook-caddyproxy.yml index bbdec06..cb5eb07 100644 --- a/playbook-caddyproxy.yml +++ b/playbook-caddyproxy.yml @@ -74,7 +74,7 @@ owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" - notify: "Restart application" + notify: "Reload caddy configuration" - name: "Copy docker compose file" ansible.builtin.template: @@ -92,21 +92,16 @@ tags: - run-app -# - name: "Reload caddy" -# community.docker.docker_compose_v2_exec: -# project_src: '{{ base_dir }}' -# service: "{{ service_name }}" -# command: caddy reload --config /etc/caddy/Caddyfile -# tags: -# - run-app - handlers: - # Приложение читает конфиги только при старте, а `state: present` не - # пересоздаёт контейнер, если docker-compose.yml не изменился, — поэтому - # правку конфига применяет только явный рестарт. - - name: "Restart application" - community.docker.docker_compose_v2: + # `state: present` не пересоздаёт контейнер, если docker-compose.yml не + # изменился, — правку Caddyfile надо применять отдельно. Через прокси идёт + # весь трафик, поэтому не рестарт, а `caddy reload`: конфиг применяется без + # разрыва соединений. Конфиг указываем явно — без --config caddy берёт файл + # из своего рабочего каталога и молча перезагружает не то. + - name: "Reload caddy configuration" + community.docker.docker_compose_v2_exec: project_src: "{{ base_dir }}" - state: "restarted" + service: "{{ service_name }}" + command: "caddy reload --config /etc/caddy/Caddyfile" tags: - run-app