.ansible | ||
.woodpecker | ||
docs | ||
guides | ||
oneshots | ||
playbooks | ||
roles | ||
.ansible-lint.yml | ||
.editorconfig | ||
.gitignore | ||
ansible.cfg | ||
cliff.toml | ||
Justfile | ||
LICENSE | ||
README.md | ||
renovate.json |
Infrastructure
Ansible stuff for my personal infrastructure services.
Description
This repository aims to provide containerized services by leveraging the Podman container engine to deploy services and systemd to control their lifecycle.
Systemd services are generated by Podman's systemd-generator quadlet
.
SELinux
is supported.
Requirements
Kernel version
- minimum: >= 4.15
- support for
device
controller on cgroupsv2
- support for
- recommended:
- >= 5.2
- support for
freezer
on cgroupsv2, mitigating rootful TOCTOU attacks
- support for
- >= 5.13
- support for rootless overlay mounts, removing the need for
fuse-overlayfs
- support for rootless overlay mounts, removing the need for
- >= 5.2
Systemd version
- minimum: >= 226
- needed for cgroupsv2
- recommended: >= 244
- if you want to delegate the
cpuset
controller
- if you want to delegate the
Podman version
- minimum: >= 4.6.0
- needed for quadlet
PodmanArgs
support
- needed for quadlet
- recommended: >= 4.8.0
- various quadlet fixes and nice-to-haves
Container runtime
crun
is the default container runtime used by podman and it is the runtime i run my
infrastructure with.
Network backend
netavark
is the default network backend since podman 4.0 and
i'm using it on all my hosts.
Furthermore the CNI
backend is deprecated and will be removed in podman 5.0.
Setup
Make sure you satisfy all system requirements mentioned above.
If you are executing any roles/playbooks directly inside this repository you should be good to go.
Otherwise you need to ensure that your ansible can either find the collections
inside of .ansible/collections
or install all required and collections from
ansible galaxy using:
ansible-galaxy install -f -r requirements.yml
Installation
You can install roles from this repository via ansible-galaxy.
Example requirements.yml
:
roles:
- src: https://git.histalek.de/histalek-de/infrastructure/-/archive/main/infrastructure-main.tar.gz?path=roles/camo
name: camo
#version: main
and then simply execute
ansible-galaxy install -f -r requirements.yml
License
This repository is licensed under GPL-3.
I took inspiration from the following two repositories/people.
Both follow a docker based approach instead of podman: