Go to file
2026-09-03 14:13:20 +00:00
group_vars Scaffold Ansible deployment structure + Homarr playbook 2026-08-26 08:55:32 -04:00
inventory Add bootstrap playbook + Homarr deploy (ansible user, Infisical secrets) 2026-08-26 10:29:44 -04:00
life-church life-church: add thinkcenter-reaper media playbook (thinkcenter-only, error-checked) 2026-09-03 14:13:20 +00:00
playbook Add reference web-app prod deploy playbook (version arg + rollback) 2026-08-27 20:47:57 +00:00
playbooks backup-homarr: rootless rclone install + delete older R2 versions 2026-08-29 11:34:54 +00:00
.gitignore Scaffold Ansible deployment structure + Homarr playbook 2026-08-26 08:55:32 -04:00
ansible.cfg test-connection v4: clean vars lookup, suppress deprecation noise 2026-08-26 12:21:17 -04:00
README.md Scaffold Ansible deployment structure + Homarr playbook 2026-08-26 08:55:32 -04:00
requirements.yml requirements: pin collection versions (avoids ansible-galaxy KeyError:results on unpinned resolve) 2026-09-03 13:18:06 +00:00
TEST.md Add TEST.md to verify Semaphore repo pull 2026-08-26 12:01:21 -04:00

semaphore — SnS deployment playbooks

Ansible playbooks run by Semaphore for deploying services across SnS hosts. Source of truth is this Gitea repo (sam/semaphore); Semaphore pulls from here.

Layout

ansible.cfg              # ansible defaults (inventory path, ssh opts)
inventory/hosts.yml      # target hosts (racknerd1/2/3), mesh IPs
group_vars/all.yml       # shared non-secret vars
playbooks/
  ping.yml               # connectivity check (run this first)
  deploy-homarr.yml      # Homarr dashboard on racknerd1
requirements.yml         # ansible collections (community.docker)

Semaphore setup (one-time)

  1. Key Store: add the SSH private key Semaphore uses to reach target hosts. Its public half must be in each target's ~/.ssh/authorized_keys.
  2. Repository: this repo — git@gitea.snsnetlabs.com:sam/semaphore.git (SSH deploy key) or HTTPS + Gitea token.
  3. Inventory: point at inventory/hosts.yml.
  4. Environment/Variable Group: set homarr_secret_encryption_key = openssl rand -hex 32 (secret; do NOT commit).
  5. Task Templates:
    • ping -> playbook playbooks/ping.yml
    • homarr -> playbook playbooks/deploy-homarr.yml, limit racknerd1

Run order

Run ping first to confirm Semaphore can reach the target, then homarr.

Notes

  • Targets are reached over the NetBird mesh (Semaphore LXC is on the mesh).
  • Secrets live in Semaphore's variable store, never in this repo.