The manifests that make up the glitched.systems infrastructure! https://glitched.systems
Find a file
2026-07-08 22:28:58 +05:30
ansible ansible: updated the inventory 2026-07-06 07:35:27 +05:30
docs docs: added them :D 2026-07-05 23:10:47 +05:30
kube hcloud: fixed a smol bug 2026-07-08 22:28:58 +05:30
.gitignore argo: setting up the app of apps thing 2026-06-29 11:56:09 +05:30
README.md docs: added them :D 2026-07-05 23:10:47 +05:30

glitched.systems Infrastructure

GitOps-managed infrastructure for glitched.systems.

Everything in the cluster is declarative. Push to main, and ArgoCD will reconcile.

Layout

infrastructure/
├── ansible/         Host bootstrap: SSH hardening, firewall, fail2ban, tailscale
├── kube/            k3s workloads, managed end-to-end by Argo CD
│   ├── root.yml     App-of-apps entrypoint (syncs kube/apps)
│   ├── apps/        Argo CD Application resources (Helm + manifest sources)
│   ├── charts/      Local Helm value overrides
│   └── manifests/   Plain Kubernetes manifests grouped by service
└── README.md

Ansible

Install collections and run playbooks against a freshly-provisioned host:

cd ansible
ansible-galaxy install -r requirements.yml

# Render the host vars from the template (never commit this)
cp ./inventory/group_vars/all/vars.yml.template ./inventory/group_vars/all/vars.yml
$EDITOR ./inventory/group_vars/all/vars.yml

# Bootstrap a new host
ansible-playbook playbooks/tailscale.yml -l hostname
ansible-playbook playbooks/hardening.yml -l hostname

ansible.cfg requires ansible/.vault_pass whenever the run touches encrypted variables. See docs/secrets.md.

Kubernetes

The cluster is fully GitOps. Push to main and the App-of-apps at kube/root.yml propagates the change. Cross-app ordering is enforced by the argocd.argoproj.io/sync-wave annotations in each kube/apps/*.yml file. (see docs/operations.md)

Workflow

  1. Make changes to a manifest or app file
  2. Commit and push to main
  3. Argo will do the rest