Remove ansible role meta dependencies to fix duplicate execution #20

Merged
eblume merged 3 commits from fix-ansible-role-deduplication into main 2026-01-16 22:50:34 -08:00
Owner

Summary

  • Remove all meta/main.yml dependencies from ansible roles
  • Role ordering is now controlled entirely by indri.yml playbook
  • Fix incorrect roles path in CLAUDE.md (playbooks/rolesroles)

Why

Ansible's tag accumulation behavior prevents proper role deduplication when using meta dependencies. When a role is pulled in as a dependency, the parent role's tags are added to the dependency's tags (e.g., [loki] becomes [alloy, loki]), making them appear as different invocations to Ansible and causing roles to run multiple times.

Deployment and Testing

  • Verified with ansible-playbook --list-tasks that each role now appears exactly once
  • Run full provision to verify no regressions

🤖 Generated with Claude Code

## Summary - Remove all `meta/main.yml` dependencies from ansible roles - Role ordering is now controlled entirely by `indri.yml` playbook - Fix incorrect roles path in CLAUDE.md (`playbooks/roles` → `roles`) ## Why Ansible's tag accumulation behavior prevents proper role deduplication when using meta dependencies. When a role is pulled in as a dependency, the parent role's tags are added to the dependency's tags (e.g., `[loki]` becomes `[alloy, loki]`), making them appear as different invocations to Ansible and causing roles to run multiple times. ## Deployment and Testing - [x] Verified with `ansible-playbook --list-tasks` that each role now appears exactly once - [x] Run full provision to verify no regressions 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Ansible's tag accumulation behavior prevents proper role deduplication
when using meta/main.yml dependencies. When a role is pulled in as a
dependency, the parent role's tags are added to the dependency's tags,
making them appear as different invocations to Ansible.

Role ordering is now controlled entirely by indri.yml playbook.

Also fixes incorrect roles path in CLAUDE.md (was playbooks/roles,
should be just roles).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace ansible loops for torrent syncing and ZIM symlinking with
standalone shell scripts that handle all items in a single pass:

- kiwix-sync-torrents.sh: Reads torrent URLs from file, adds missing
  ones to transmission in one execution
- kiwix-symlink-zims.sh: Symlinks all completed ZIM files from download
  directory to kiwix directory in one pass
- kiwix-torrents.txt: Generated list of torrent URLs from inventory

This reduces ansible output noise and improves execution speed by
avoiding per-item task invocations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
BSD head (macOS) doesn't support negative line counts like GNU head.
Use `sed '$d'` instead of `head -n -1` to remove the last line.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
eblume merged commit 75426be1dc into main 2026-01-16 22:50:34 -08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!20
No description provided.