Martin Gattermann zeigte in einem eindrucksvollen Showcase zum Thema “Infrastructure as Code” die Verwendung von Terraform und Ansible zur automatisierten Einrichtung und Konfiguration eines Web-Servers.

Mit Hilfe der vorgestellten Tools lässt sich auf Knopfdruck ein kompletter Server automatisiert einrichten. Der Ablauf umfasst die Bereitstellung eines virtuellen Servers in der Hetzner Cloud, die Einrichtung der zugehörigen Netzwerkzugänge, Installation eines SSL Zertifikats, Einrichtung von Firewall-Regeln, Anlegen einer Subdomain und der zugehörigen DNS-Einträge in einem Cloudflare-Konto, Installation von zusätzlicher Software auf dem Server, Deployment einer Website aus einem git-Repo und Überwachung der Server-Metriken mit Prometheus.

Nachdem der Server fertig installiert und die Website von den Stammtisch Teilnehmern live getestet werden konnte, wurde mit dem gleichen Script der komplette Server und alle seine Komponenten und Zugänge automatisch wieder deinstalliert.

Zunächst erläuterte Martin das dahinter liegende Setup und die Funktionsweise der eingesetzten Tools.

Terraform

Terraform ist ein Infrastructure-as-Code-Tool, das über Provider-Plugins mit verschiedenen Cloud-Plattformen und Services kommuniziert. Diese Provider stellen die Schnittstellen zu den APIs der jeweiligen Infrastruktur-Anbieter bereit. Ein zentrales Konzept ist das State-Management: Terraform speichert den aktuellen Zustand der verwalteten Infrastruktur in einer State-Datei und kann durch Vergleich mit der gewünschten Konfiguration Abweichungen erkennen. Über CLI-Kommandos wie plan, apply und destroy kann die Infrastruktur geplant, bereitgestellt, aktualisiert oder vollständig entfernt werden. Das Terraform Registry bietet eine zentrale Sammlung von Providern und Modulen für unzählige unterstützte Services und Plattformen.

Ansible

Ansible verwendet einen agentenlosen Ansatz und kommuniziert standardmäßig über SSH mit Linux/Unix-Zielsystemen oder WinRM mit Windows-Systemen. Alternativ sind auch andere Verbindungsmethoden wie lokale Ausführung oder API-basierte Kommunikation möglich. Ansible verfügt über eine umfangreiche Sammlung von Modulen, die spezifische Aufgaben wie das Verteilen von Dateien, Installieren von Software, Konfigurieren von Services oder Verwalten von Benutzern automatisiert ausführen. Zusätzlich erweitern Plugins die Funktionalität in Bereichen wie Inventarverwaltung oder Variablen-Lookup. Die Automatisierung erfolgt über Playbooks, die in YAML geschrieben werden und eine oder mehrere dieser Module orchestrieren.

Demo-Projekt

Basierend auf diesen Grundlagen demonstrierte Martin die praktische Anwendung beider Tools in einem integrierten Workflow.

In seinem Demo-Projekt definierte Martin zunächst zentrale Konfigurationsparameter wie Account-Zugänge, API-Keys und den Namen der einzurichtenden Subdomain. Das Projekt umfasste drei Hauptkomponenten: die Terraform-Konfigurationsdateien für die Infrastruktur-Definition, die entsprechenden Terraform-Kommandos zur Infrastruktur-Steuerung sowie ein Ansible-Playbook für die automatisierte Software-Installation und Konfiguration auf den bereitgestellten Servern. Diese Kombination ermöglichte eine nahtlose Bereitstellung vom Infrastructure-Setup bis zur fertigen Anwendung.

Die Vorteile dieses Ansatzes fasste Martin nochmals ausdrücklich zusammen:

  • Wiederholbarkeit und Versionierung von Infrastruktur
  • Automatisierung und Reduzierung menschlicher Fehler
  • Einfache Integration in CI/CD-Pipelines

Schnell kam die Frage auf, ob sich damit auch ein FileMaker Server genauso einfach installieren ließe. Selbstverständlich ist auch das möglich. Bernhard Schulz hat dafür bereits vor einiger Zeit auf github ein rudimentäres Ansible Playbook bereit gestellt.

Auch Martins Demo-Projekt steht inzwischen auf github zur Verfügung und kann für eigene Zwecke adaptiert werden.

Terraform
https://developer.hashicorp.com/terraform
https://registry.terraform.io

Ansible
https://ansible.com/
https://docs.ansible.com
https://galaxy.ansible.com/ui/collections/

Martins Demo-Projekt auf github:
https://github.com/martingattermann-prv/portfolio-infrastructure

github: FileMaker Server Installation on Ubuntu with Ansible
https://github.com/schube/FileMaker-Server-Ansible