Wenn du Infrastruktur schon einmal über eine Weboberfläche verwaltet hast, kennst du das Problem: Es ist einfach, den Überblick zu verlieren, welche Einstellung wann und warum geändert wurde. Im Moment ist das bequem, aber schwer zu reproduzieren, zu überprüfen oder zu automatisieren. Besonders wenn mehrere Personen an derselben Infrastruktur arbeiten.
Genau hier setzt Infrastructure as Code (IaC) an. Statt deine Infrastruktur über Klicks in einer Oberfläche zu beschreiben, beschreibst du sie in Code. Dieser Code lässt sich versionieren, über Pull Requests reviewen, wiederverwenden und beliebig oft ausführen, um jedes Mal das gleiche Ergebnis zu erzielen.
Infrastructure as Code ist dabei nur ein Teil des Bildes. Moderne Plattformen werden zusätzlich über APIs, Kommandozeilen-Tools, Deployment-Plattformen, Configuration Management und GitOps-Workflows gesteuert. Zusammen ermöglichen dir diese Werkzeuge, deine Infrastruktur vollständig per Code zu bedienen und zu automatisieren.
Das ist besonders wertvoll, wenn du eine Plattform für andere Teams baust. Wenn du die Art, wie Infrastruktur bereitgestellt wird, standardisierst, sei es über Terraform-Module, Ansible-Playbooks oder GitOps-Repositories, gibst du jedem Team eine konsistente, nachvollziehbare Arbeitsweise, statt dass jedes Team seinen eigenen Ansatz erfindet. Ausserdem siehst du dadurch viel einfacher, woher Infrastrukturkosten tatsächlich kommen, da Ressourcen, die einem bestimmten Team oder Projekt zugeordnet sind, explizit im Code definiert sind statt verstreut in einem gemeinsamen Account.
Egal welchen Workflow du bevorzugst: Die Chance ist gross, dass wir bereits ein Tool, ein Beispiel oder eine Anleitung haben, die dir den Einstieg erleichtert.
Dein Werkzeugkasten für die Zusammenarbeit mit uns per Code
| Tool | Was es macht | Wofür geeignet |
|---|---|---|
| Nine API | Direkter REST-Zugriff auf alle Nine-Ressourcen | Eigene Integrationen, eigenes Tooling |
nctl | CLI, aufgebaut auf der Nine API | Tagesgeschäft, Scripting, CI/CD |
| Deploio | Managed Application Platform (git push zum Deployen) | Anwendungen deployen, ohne Infrastruktur zu verwalten |
| Terraform | Deklarative Bereitstellung von Cloud-Ressourcen | Versionierte, nachvollziehbare Umgebungen (Cluster, Datenbanken, Storage) |
| Ansible | Orchestrierung mehrstufiger Workflows | Bereitstellen, Konfigurieren und Validieren in einem Playbook |
| ArgoCD | GitOps Continuous Delivery für Kubernetes | Deployte Anwendungen synchron mit einem Git-Repository halten |
Die Nine API
Die Nine APIs sind die Grundlage der Automatisierung auf unserer Plattform. Sie stellen alle unsere öffentlichen Services über eine REST API auf Basis von Kubernetes-Konzepten bereit, was sie für alle vertraut macht, die bereits mit Cloud-Native-Tooling arbeiten.
Du kannst mit der API arbeiten über:
Falls keines der bestehenden Tools zu deinem Workflow passt, kannst du dein eigenes bauen. Die API ist offen, folgt gängigen Standards und ist dafür gedacht, in deine eigenen Skripte, Anwendungen oder internen Plattformen integriert zu werden.
Die vollständige Dokumentation findest du unter docs.nine.ch/api.
Mehr zu den Ideen hinter der API liest du in unserem Blogpost Introducing the Nine Self-Service API.
nctl: unser Command Line Interface
nctl ist unser Kommandozeilen-Client, der
auf der Nine API aufbaut. Er bietet dir eine bequeme Möglichkeit, deine
Nine-Ressourcen direkt vom Terminal aus zu erstellen, zu aktualisieren und zu
inspizieren, ohne selbst HTTP-Requests abzusetzen oder Kubernetes-Manifeste
zu schreiben.
nctl eignet sich, wenn du wiederkehrende Aufgaben automatisieren, uns in
Shell-Skripte oder CI/CD-Pipelines einbinden oder einfach lieber von der
Kommandozeile aus arbeiten möchtest. Im Hintergrund nutzt nctl dieselbe
öffentliche API, alles was du mit nctl lernst, hilft dir also auch, die
zugrundeliegende Plattform besser zu verstehen.
Die nctl-Dokumentation enthält
Installationsanleitungen, Einstiegs-Guides und Beispiele für die Arbeit mit
Kubernetes-Clustern, Datenbanken, Object Storage, virtuellen Maschinen,
Deploio-Anwendungen und vielen weiteren Nine-Services.
Deploio
Deploio ist unsere Managed Application Platform. Statt Infrastruktur selbst bereitzustellen, verweist du Deploio einfach auf dein Git-Repository. Deploio klont deinen Quellcode, baut daraus ein OCI-Container-Image, deployt ein neues Release und macht deine Anwendung automatisch erreichbar.
Deploio unterstützt von Haus aus mehrere gängige Sprachen und Frameworks über
Cloud Native Buildpacks. Wenn deine Anwendung mehr Kontrolle braucht, kannst
du sie auch über ein eigenes Dockerfile bauen, wodurch sich praktisch jede
Webanwendung betreiben lässt.
Auch wenn die Plattform einen Grossteil der operativen Komplexität abnimmt,
bleibt das Deployment keine Black Box. Mit nctl kannst du Build- und
Release-Logs einsehen, fehlgeschlagene Builds oder Releases erneut ausführen,
eine Shell in einer laufenden Anwendung öffnen oder das erzeugte OCI-Image
sogar lokal zum Debuggen herunterladen.
Wirf einen Blick in unser Deploio-Beispiele-Repository, das Beispielanwendungen für verschiedene Sprachen und Frameworks enthält. Falls deine bevorzugte Technologie fehlt, sag uns Bescheid, wir erweitern unsere Beispiele gerne.
Mehr dazu findest du auch in unserem Blog:
Terraform: klassisches Infrastructure as Code
Wenn du bereits einzelne Ressourcen bequem mit nctl oder direkt über die
API verwaltest, fragst du dich vielleicht, wann sich Terraform mehr lohnt.
nctl und die API eignen sich ideal für schnelle, gezielte Änderungen,
Scripting und das Tagesgeschäft. Terraform passt besser, sobald du eine
ganze Umgebung deklarativ bereitstellen und versionieren möchtest, zum
Beispiel einen Kubernetes-Cluster zusammen mit seinen Datenbanken und
Storage-Buckets als eine einzige, nachvollziehbare und wiederholbare
Einheit, besonders wenn dieser Zustand im Team geteilt und reviewt werden
soll.
Terraform ist ein verbreitetes Infrastructure-as-Code-Tool zur Bereitstellung von Cloud-Ressourcen. Statt Infrastruktur manuell anzulegen, beschreibst du den gewünschten Zielzustand im Code, und Terraform ermittelt, welche Ressourcen erstellt, aktualisiert oder entfernt werden müssen.
Dadurch lässt sich deine Infrastruktur einfach versionieren, Änderungen lassen sich über Pull Requests reviewen, und identische Umgebungen lassen sich jederzeit neu erzeugen. Terraform eignet sich hervorragend für langlebige Infrastruktur wie Kubernetes-Cluster, bevor diese an Deployment-Tools wie ArgoCD übergeben wird.
Unsere Terraform-Beispiele zeigen, wie du Nine-Ressourcen vollständig per Code bereitstellst, und dienen als Ausgangspunkt für deine eigene Infrastruktur.
Ansible: Infrastruktur-Setup automatisieren
Während sich Terraform auf die Bereitstellung von Infrastruktur konzentriert, ist Ansible besonders stark bei der Orchestrierung ganzer Workflows. Mit einfachen, gut lesbaren YAML-Playbooks kannst du Ressourcen bereitstellen, auf ihre Verfügbarkeit warten, Verbindungsdaten abrufen, Services konfigurieren, das Deployment validieren und beliebige Folgeaufgaben automatisieren.
Unsere Anleitung From Zero to Infra: Building a Production-Ready Setup Using Our API & Ansible
zeigt, wie du Ansible mit der Nine API und nctl kombinierst, um eine
produktionsnahe Umgebung aus einer PostgreSQL-Datenbank, einer
Redis-Instanz und einer virtuellen Maschine bereitzustellen. Dabei rufen
die Playbooks auch Verbindungsinformationen ab und prüfen, ob jeder Service
einsatzbereit ist.
ArgoCD: Continuous Delivery nach GitOps-Prinzip
ArgoCD bringt den GitOps-Ansatz zu Kubernetes. Statt Anwendungen manuell zu deployen, speicherst du deine Kubernetes-Manifeste oder Helm-Charts in einem Git-Repository. ArgoCD überwacht dieses Repository laufend und sorgt dafür, dass dein Cluster immer dem in Git definierten Zielzustand entspricht.
Dadurch ist jedes Deployment versioniert, über Pull Requests nachvollziehbar und bei Bedarf einfach zurückrollbar. Nimmt jemand eine manuelle Änderung am Cluster vor, erkennt ArgoCD diese Abweichung und kann sie automatisch korrigieren, sodass deine Anwendungen im deklarierten Zustand bleiben.
Unsere ArgoCD-Beispielanwendungen zeigen, wie du Anwendungen bei Nine mit Helm und GitOps-Workflows deployst. Nutze sie gerne als Ausgangspunkt für deine eigenen Projekte.
Wie das in der Praxis aussieht, liest du in unserer Case Study dazu, wie wir mühlemann+popp bei der Einführung von ArgoCD unterstützt haben, damit sie während der Migration auf Nine Kubernetes Engine volle Transparenz über ihre Deployments für ihre Kundschaft aus dem Gesundheitswesen behalten.
Entdecken, mitwirken und verbessern
All unsere Open-Source-Projekte findest du auf unserem GitHub.
Durchstöbere die Repositories, forke sie, reiche Pull Requests ein oder nutze sie einfach als Inspiration für deine eigenen Projekte. Feedback und Beiträge sind bei uns immer willkommen.
Sag uns deine Meinung
Fehlt dir ein Tool, ein Beispiel oder eine Integration? Erstelle ein Issue im entsprechenden GitHub-Repository und schreib uns, was fehlt oder unklar ist. Wir freuen uns zu hören, wie du deine Infrastruktur bei Nine per Code verwaltest.



































































































