This repository houses Ansible resources for configuring my personal homelab. It covers the setup of physical hosts, such as configuring UPS systems and ZFS Event Daemon with Postfix as an SMTP relay for critical issue notifications, as well as declarations for virtual machines.
This project aims to be completely declarative and able to bootstrap an empty environment in to use for disaster recovery and initial setup. The roles are written to be re-usable and independent of the underlying Linux OS family. All roles are used / tested on Debian-based systems.
Built with Ansible
The following is necessary to start using this repository:
Required packages:
ansible
sshpass
(for initial setup)python-passlib
jq
python-jmespath
Optional packages:
bitwarden-cli
(for getting secrets)sshpass
(for populating public SSH keys during initial setup)
Ansible collections:
ansible.builtin
community.general
(for bitwarden lookups)community.proxmox
Installation example on Arch (btw)
The ansible
package includes all required collections
sudo pacman --sync ansible sshpass python-passlib jq python-jmespath
Role documentation:
The Playbooks should be called using the site.yaml
Playbook. It includes tags
for various combination of steps:
ansible-playbook site.yaml --tags init # bootstrap a new environment
ansible-playbook site.yaml --tags init --limit proxmox # bootstrap all proxmox nodes environment
ansible-playbook site.yaml --tags upgrade # upgrade all systems
- Systemd-nspawn containers on TrueNAS Scale (Jailmaker)
- Centralized monitoring/logging
- Migrate Nextcloud to systemd-nspawn (currently Scale app)
- Migrate gitea to systemd-nspawn (currently Scale app)
- Migrate Paperless-NGX to systemd-nspawn (currently Scale app)
- Migrate external proxy (FRP) to simple tunnel (Wireguard)
-
Proxmox-
Ubuntu Cloud image VM template -
VM storage backend (probably Ceph) -
Proxmox Backup Server
-
-
Kubernetes
See the open issues for a full list of proposed features (and known issues).
David Gries - @dgries - mail@dgries.de