Infrastructure as Code (IaC) ist ein mächtiges Werkzeug, das im Rahmen der DevOps-Bewegung die Entwicklung und den Betrieb näher zusammenbringt. Es ermöglicht vor allem das automatisierte Aufsetzen von Laufzeitumgebungen – von der Entwicklungs- bis hin zur Produktionsumgebung. Häufig werden bei der Umsetzung von IaC Virtuelle Maschinen und Werkzeuge wie Chef, Puppet und Vagrant zu deren Provisionierung eingesetzt. Im besten Fall gelangt man irgendwann an einen Punkt, an dem man mit nur einem Klick aus einem Betriebssystem-Basis-Image ein für den Produktionsbetrieb geeignetes VM-Image einschließlich Konfiguration und vorinstallierten Anwendungen erzeugen kann.
Nach dem Immutable Server-Ansatz wird bei Änderungen an einer Infrastrukturkomponente, sei es eine Konfigurationsänderung, eine Aktualisierung des Betriebssystems oder eine neue Anwendungsversion, einfach ein komplett neues Image nach der Bauanleitung bzw. dem so genannten Rezept des Konfigurationsmanagement-Tools erstellt. Ein wichtiger Aspekt dabei ist, dass bestehende VM-Instanzen bei Konfigurationsänderungen nicht geändert (z.B. durch Einspielen einer neuen Anwendungsversion) sondern jedes Mal vollständig neu erzeugt werden. Damit wird sichergestellt, dass die ausgeführten Konfigurationsschritte sowie deren Reihenfolge für jeden Server und jede Umgebung stets reproduzierbar sind.