Ansible Playbooks and related configuration for CCCHH infrastructure
Find a file
jtbx 4fff0a9d0d
All checks were successful
/ Ansible Lint (push) Successful in 1m34s
/ Ansible Lint (pull_request) Successful in 1m31s
dokuwiki: Refactor support for multiple OS versions
2024-12-08 19:48:48 +01:00
.forgejo/workflows pin ansible-lint (action) to a specific version to avoid random breakage 2024-12-08 02:49:50 +01:00
.vscode exclude symlinked ("roles" and "resources") dirs from vscode search 2024-12-08 02:55:25 +01:00
collections Use the .yaml file extension for all YAML files 2023-05-08 19:55:08 +02:00
inventories reorganize (config) files and templates into one "resources" dir 2024-12-08 02:55:25 +01:00
playbooks reorganize (config) files and templates into one "resources" dir 2024-12-08 02:55:25 +01:00
resources reorganize (config) files and templates into one "resources" dir 2024-12-08 02:55:25 +01:00
roles dokuwiki: Refactor support for multiple OS versions 2024-12-08 19:48:48 +01:00
.ansible-lint exclude .forgejo/ directory from ansible-lint 2024-11-24 01:08:13 +01:00
.editorconfig add .editorconfig to ensure some style and format consistency 2024-11-23 02:11:48 +01:00
.gitignore exclude symlinked ("roles" and "resources") dirs from vscode search 2024-12-08 02:55:25 +01:00
.yamllint.yaml add .yamllint.yaml for some nicer yaml configuration for ansible-lint 2024-11-23 02:31:31 +01:00
ansible.cfg enable pipelining as it seems to work and be faster 2024-12-08 02:55:25 +01:00
LICENSE Add LICENSE 2023-04-15 14:28:45 +00:00
README.md reference new "resources" dir and generally fix up and improve README 2024-12-08 02:55:25 +01:00
requirements.yml fix all ansible-lint yaml errors (except for line-length) 2024-11-23 02:49:23 +01:00

CCCHH Ansible Repository

Folgende Geräte und Server werden duch dieses Ansible Repository verwaltet:

  • Diverse VMs auf dem ThinkCCCluster
  • Diverse VMs auf dem Chaosknoten

Host-spezifische Konfigurationsdateien liegen unter resources/ und werden für jeweils über eine 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 auf dem Chaosknoten hinter dem public-reverse-proxy. Der Service-Name service.hamburg.ccc.de sollte ein CNAME für public-reverse-proxy.hamburg.ccc.de und die Service-VM unter service-intern.hamburg.ccc.de mit einer 172.31.17.x-Adresse erreichbar sein.

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 Host
  • resources/chaosknoten/public-reverse-proxy/nginx/acme_challenge.conf: Liste der Hostnamen um den neuen Host erweitern, die hinter dem Reverse-Proxy stehen
  • resources/chaosknoten/public-reverse-proxy/nginx/nginx.conf: Liste der Hostnamen um den neuen Host erweitern, die hinter dem Reverse-Proxy stehen
  • resources/chaosknoten/host/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
  • resources/chaosknoten/host/docker_compose/compose.yaml.j2: Config für Docker Compose (wenn verwendet)