Ansible: точечные фиксы идемпотентности

- backup-targets собирается одной copy вместо lineinfile в цикле: теперь
  удаление цели из списка реально убирает строку из файла (7 плейбуков)
- netdata: getent вместо grep по /etc/group, ушёл бессмысленный changed_when
  и мёртвый фолбэк PGID
- исправлены копипастные имена play в wanderer и remove-user-and-app
This commit is contained in:
av
2026-07-24 21:26:39 +03:00
parent 4d976585ec
commit 564432755d
12 changed files with 54 additions and 92 deletions
-1
View File
@@ -36,7 +36,6 @@ _(sec-ревью)_ — три независимых security-ревью на м
- [Уведомления о размере приложений и диске](disk-usage-alerts.md) — алерты на заполнение диска и аномальный рост data-томов; сервер ресурсно ограничен _(tududi)_
- [Handlers рестарта для оставшихся приложений](handlers-remaining-apps.md) — apprise/dashboard/transcriber/miniflux монтируют конфиг в контейнер, но рестарта нет вовсе; правка конфига не подхватывается
- [Composable-роль `backup`](ansible-backup-role.md) — бэкап — самый чистый шов для extraction (одинаков у всех, различается только список targets) _(ансибл-ревью)_
- [Точечные фиксы идемпотентности и баг имени play](ansible-quick-fixes.md) — быстрые правки: имя play в wanderer, `changed_when` в netdata/eget, backup-targets через template _(ансибл-ревью)_
## Низкий
-25
View File
@@ -1,25 +0,0 @@
# Точечные фиксы идемпотентности и баг имени play
**Приоритет:** средний
Быстрые пойнтовые правки без структурных изменений:
- **`playbook-wanderer.yml:2`** — play назван `"Configure gramps application"`
при `app_name: "wanderer"` (копипаст из gramps). Поправить имя. _(баг)_
- **`playbook-netdata.yml:118-125`** — `changed_when: ...rc != 0` для read-only
запроса лишён смысла; должно быть `changed_when: false`. Лучше заменить
`shell: grep docker /etc/group` на модуль `ansible.builtin.getent` — уйдёт
`pipefail` и хрупкий парсинг.
- **`playbook-eget.yml:23-78`** — восемь `command` с `changed_when: false`, хотя
реально ставят/обновляют бинарники: прогон всегда «ok», теряется честность
`--diff`. Ставить через роль `eget` (она корректно проверяет версию) или через
проверку версии.
- **`playbook-memos.yml:57-67`** и аналоги — сборка `backup-targets` через
`lineinfile` в цикле не удаляет устаревшие строки при изменении списка; `mode:
"0750"` на файле-списке выглядит как copy-paste. Чище — `template`/`copy:
content` со всем списком.
Контекст: [docs/drafts/ansible-review.md](../drafts/ansible-review.md) §4, §7.
Связано: playbook-wanderer.yml, playbook-netdata.yml, playbook-eget.yml,
playbook-memos.yml, roles/eget.