From 16f0712a31b6636c6a566063eaa61d451a615c5f Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 22 Aug 2026 19:08:08 +0300 Subject: [PATCH] =?UTF-8?q?caddyproxy:=20Caddyfile=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20caddy=20reload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - вместо рестарта всего прокси, через который идёт весь трафик; конфиг указан явно через --config, иначе caddy молча перезагружает не тот файл - задача handlers-remaining-apps удалена из беклога --- docs/backlog/README.md | 1 - playbook-caddyproxy.yml | 25 ++++++++++--------------- 2 files changed, 10 insertions(+), 16 deletions(-) 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