June
abc738c9c2
All checks were successful
/ Ansible Lint (push) Successful in 1m33s
Because of how Ansible local relative search paths work, the global "files" and "templates" directories need to be next to the playbooks. However its not intuitive to look into the playbooks directory to find the files and templates for a host. Therefore flatten the playbooks directory to get rid of this confusing structure. Also see: https://docs.ansible.com/ansible/latest/playbook_guide/playbook_pathing.html#resolving-local-relative-paths |
||
---|---|---|
.forgejo/workflows | ||
.vscode | ||
collections | ||
files | ||
inventories | ||
roles | ||
templates/chaosknoten/configs | ||
.ansible-lint | ||
.editorconfig | ||
.gitignore | ||
.yamllint.yaml | ||
ansible.cfg | ||
check.yaml | ||
deploy.yaml | ||
LICENSE | ||
maintenance.yaml | ||
README.md | ||
requirements.yml |
CCCHH Ansible Repository
Folgende Geräte und Server werden duch dieses Ansible Repository verwaltet:
- Diverse VMs auf dem ThinkCCCluster
Die Konfigurationsdateien liegen unter playbooks/files/configs
bzw. playbooks/templates/configs
und werden für Hosts jeweils in einer host_vars
-Datei im Inventory geladen.
Galaxy-Collections und -Rollen installieren
Für einige Aspekte verwenden wir Rollen aus Ansible Galaxy. Die müssen zunächst installiert werden:
ansible-galaxy install -r requirements.yml
Secrets
Grundsätzlich sollten Secrets vermieden werden. (Also z.B.: Nutze SSH Keys statt Passwort.)
Da Secrets aber durchaus doch gebraucht werden, werden diese dann in diesem Repo direkt aus dem password-store (meist aus einem Sub-Eintrag des noc/
Ordners) geladen.
Dies geschieht mit Hilfe des community.general.passwordstore
lookup Plugins.
Playbook nur für einzelne Hosts ausführen
Ein paar der Hosts haben den selben Namen, was es etwas schwieriger macht, das Playbook nur für einen der Hosts auszuführen, z. B. public-reverse-proxy
. Die Kombination aus --inventory
und --limit
führt zum Erfolg:
ansible-playbook playbooks/deploy.yaml --inventory inventories/chaosknoten/hosts.yaml --limit public-reverse-proxy
Neuen Web-Service hinzufügen
Wir deployen Web-Services hinter dem public-reverse-proxy
. Der Service-Name service.hamburg.ccc.de
ist ein CNAME für public-reverse-proxy.hamburg.ccc.de, und die Service-VM ist unter service-intern.hamburg.ccc.de
mit einer 172.31.17.x
-Adresse erreichbar.
Im Ansible-Repo müssen diese Sachen hinzugefügt werden:
inventories/chaosknoten/hosts.yaml
:- SSH-Config für die neue VM unter all/children/debian_12/hosts
- Einträge für die Rollen, die dieser Host haben soll, min.
certbot_hosts
,nginx_hosts
, ggf.docker_compose_hosts
inventories/chaosknoten/host_vars/
host.yaml
: config vars für den neuen Hostplaybooks/files/chaosknoten/configs/public-reverse-proxy/nginx/acme_challenge.conf
: Liste der Hostnamen um den neuen Host erweitern, die hinter dem Reverse-Proxy stehenplaybooks/files/chaosknoten/configs/public-reverse-proxy/nginx/nginx.conf
: Liste der Hostnamen um den neuen Host erweitern, die hinter dem Reverse-Proxy stehenplaybooks/files/chaosknoten/configs/cloud/nginx/
host.hamburg.ccc.de.conf
: Server auf dem Service-Host- Individuelle Config für den Service. Wenn Docker Compose, hier weiterleiten auf den eigentlichen Dienst in Compose.
- Cert-Dateinamen anpassen
playbooks/templates/chaosknoten/configs/
host/compose.yaml.j2
: Config für Docker Compose (wenn verwendet)