Читать книгу Handbuch Infrastructure as Code - Kief Morris - Страница 65
Listing 4-2: Beispiel für deklarativen Code
Оглавлениеvirtual_machine:
name: my_application_server
source_image: 'base_linux'
cpu: 2
ram: 2GB
network: private_network_segment
provision:
provisioner: servermaker
role: tomcat_server
Dieser Code enthält keine Logik, mit der geprüft wird, ob der Server schon besteht, oder mit der darauf gewartet wird, dass der Server bereit ist, bevor der Provisioner gestartet wird. Das Tool, das Sie ausführen, um den Code anzuwenden, kümmert sich darum. Es vergleicht auch die aktuellen Infrastruktur-Attribute mit der Deklaration und ermittelt, welche Änderungen vorzunehmen sind, um die Infrastruktur auf den gewünschten Stand zu bringen. Um also in diesem Beispiel den Speicher des Anwendungsservers zu erhöhen, bearbeiten Sie die Datei und lassen das Tool erneut laufen.
Deklarative Infrastruktur-Tools wie Terraform oder Chef trennen das Was (Sie wollen) vom Wie (es erzeugt wird). Im Ergebnis ist Ihr Code sauberer und direkter. Manche beschreiben deklarativen Infrastruktur-Code als näher am Konfigurieren denn am Programmieren.
Ist deklarativer Code echter Code? Manche lehnen deklarative Sprachen ab, weil diese eher Konfiguration als »echter« Code sind. Ich verwende das Wort »Code«, um mich sowohl auf deklarative als auch auf imperative Sprachen zu beziehen. Muss ich zwischen beidem unterscheiden, sage ich ganz spezifisch entweder »deklarativ« oder »programmierbar« (oder nutze eine Variante davon). Ich finde die Diskussion darüber, ob eine Coding-Sprache Turingvollständig sein muss, müßig. Ich finde selbst reguläre Ausdrücke für bestimmte Zwecke sinnvoll – und die sind auch nicht Turingvollständig. Daher mag mir eine Ergebenheit für die Reinheit »echter« Programmierung auch einfach fehlen. |