Ansible configuration for the Netz39 infrastructure
Find a file
2026-01-15 06:01:53 +01:00
files prosody: Indicate conf files are managed through Ansible 2025-10-26 20:39:52 +01:00
group_vars dyndns: Move vault vars away from global scope 2025-10-22 18:36:12 +02:00
host_vars chore(deps): update renovate/renovate docker tag to v42.74.7 2026-01-09 05:18:37 +00:00
roles chore(deps): update mrtux/cleanuri-webui docker tag to v0.2.11 2026-01-06 12:18:31 +00:00
templates prosody: Merge updates from v13.0 dist config 2025-10-26 21:30:48 +01:00
.editorconfig chore(editorconfig): trim trailing whitespace in yaml files 2025-11-14 19:42:22 +01:00
.gitignore gitignore: Add local hidden ansible directory 2025-11-03 07:22:38 +01:00
.mailmap 📝 mailmap: Merge some new identies 2025-02-27 21:59:00 +01:00
.yamllint yamllint: Add recommendations of ansible-lint 2025-11-25 21:27:10 +01:00
ansible.cfg Update config yaml format in default callback plugin 2025-04-30 13:17:14 +02:00
configure-grafana.yml update requirements.yml to correctly install collection 2022-11-12 15:31:51 +01:00
group-all.yml Fix a stupid mistake in vars spec 2025-07-28 13:32:47 +02:00
group-docker_host.yml chore(deps): update telegraf docker tag to v1.37.1 2026-01-14 23:20:26 +00:00
group-k3s.yml 🚨 Add names to plays to fix name[play] linter warnings 2025-03-02 09:22:05 +01:00
group-proxmox.yml 🚨 Add names to plays to fix name[play] linter warnings 2025-03-02 09:22:05 +01:00
host-beaker.yml Fix a stupid mistake in vars spec 2025-07-28 13:32:47 +02:00
host-hobbes.yml Fix a stupid mistake in vars spec 2025-07-28 13:32:47 +02:00
host-holmium.yml Add CiviCRM container for member management 2025-11-16 22:21:23 +01:00
host-krypton.yml chore(deps): update netz39/entities_validation_svc docker tag to v1.0.8 2025-12-28 14:18:23 +00:00
host-oganesson.yml Fix a stupid mistake in vars spec 2025-07-28 13:32:47 +02:00
host-platon.yml host: platon: Use make module instead of shell command 2025-11-25 21:27:10 +01:00
host-plumbum.yml 🚨 Add names to plays to fix name[play] linter warnings 2025-03-02 09:22:05 +01:00
host-pottwal.yml Merge pull request 'chore(deps): update redmine docker tag to v6.1.1' (#754) from renovate/redmine-6.x into master 2026-01-08 12:42:16 +01:00
host-radon.yml Enquote implicit octal values 2025-11-25 21:27:31 +01:00
host-sisyphos.yml chore(deps): update docker docker tag to v29.1.4 2026-01-09 21:18:27 +00:00
host-tau.yml group: docker: Make creation of data dir explicit 2025-10-21 22:28:28 +02:00
host-unicorn.yml Merge pull request 'chore(deps): update jacobalberty/unifi docker tag to v9.5.21' (#672) from renovate/jacobalberty-unifi-9.x into master 2025-10-29 08:17:31 +01:00
host-wittgenstein.yml Merge pull request 'chore(deps): update netz39/ampel-controller docker tag to v0.3.1' (#748) from renovate/netz39-ampel-controller-0.x into master 2025-12-27 12:05:35 +01:00
inventory.yml Add new host 'sisyphos' 2025-10-15 22:23:01 +02:00
main.yml Add new host 'sisyphos' 2025-10-15 22:23:01 +02:00
README.md Add hint to Galaxy sync to README 2025-07-20 13:35:38 +02:00
renovate.json chore(renovate): Fix reviewer team 2025-11-26 22:02:19 +01:00
requirements.yml chore(deps): update dependency 24367dfa.dehydrated to v2.5.0 2025-12-15 23:18:31 +00:00
setup-ssh.yml 🚨 setup-ssh: Fix risky-file-permissions linter warnings 2025-07-23 08:45:35 +02:00

Ansible configuration for the Netz39 infrastructure

This call lists all hosts defined in the inventory:

ansible all --list-hosts

Setup

ansible-galaxy install -r requirements.yml

Setup SSH Access to hosts

LOGUSER=<loguser>
SSH_KEY=<absolute/path/to/ssh/private/key>
ansible-playbook setup-ssh.yml --ask-vault-pass -e "setup_ssh_logname=$LOGUSER" -e "setup_ssh_key=$SSH_KEY"

This playbook also adds rhodium.n39.eu (OpenWRT router), but our Ansible cannot set up SSH keys (yet). Please add your key to OpenWRT manually.

Edit vault encrypted vars files

ansible-vault edit group_vars/all/vault

Call with

ansible-galaxy install --force -r requirements.yml
ansible-playbook --ask-vault-pass main.yml

Please make sure that the galaxy roles are in sync with the requirements file!

You need to provide a user with sudo rights and the vault password.

Verify Changes

ansible-lint main.yml
ansible-playbook --ask-vault-pass main.yml --check --diff

HTTPS ingress configuration

HTTPS ingress is controlled by the server holmium and forwarded to the configured servers.

To set up a new HTTPS vhost, the following steps need to be taken:

  1. Select a domain (for internal services we use sub-domains of .n39.eu).
  2. Create an external CNAME from this domain to dyndns.n39.eu.
  3. Create an internal DNS entry in the Descartes DNS config. This is usually an alias on an existing server.
  4. Add the entry to the holmium playbook.
  5. Set up Dehydrated and vhost on the target host, e.g. using setup_http_site_proxy.

Do not forget to execute all playbooks with relevant changes.