Wie kommen Ansible Templates zur Anwendung und wieso ist der Ansible Loop so wichtig?

Wie kommen Ansible Templates zur Anwendung und wieso ist der Ansible Loop so wichtig?

Playbooks verwenden eine einfache beschreibende Sprache, die auf YAML- und Jinja-Templates basiert. Mit Jinja2 können Templates vererbt werden. In einem Base-Template können allgemeingültige Elemente definiert werden. In sogenannten „Blocks“ können Teile von Child-Templates überschrieben werden. Für die Webseite wird ein spezifisches Ansible Template verwendet. Die dort in Jinja-Syntax eingebundenen Variablen werden dann von Ansible ausgefüllt, wenn die Datei mittels template-Modul an die gewünschte Stelle kopiert wird. Template-Dateien bekommen die Dateiendung .j2. Mit der Ansible Template-Datei und dem Stylesheet erhält man dann eine genaue Ordnerstruktur. Der darauffolgende Task verläuft analog zum Neustarten des Firewall-Dienstes: Sofern sich die index-Datei oder das Stylesheet beim Deployment ändern, kann nginx ev. neu gestartet oder im laufenden Betrieb die ausgelieferten Dateien geändert werden. Der letzte Task soll nun noch eine Nachricht als «Message-of-the-day» setzen, die beim Server Login per SSH angezeigt wird. Auch hier wird wieder das Ansible template-Modul benutzt, um die gewünschte Datei nach etc/motd zu kopieren. Es wird also eine motd.j2-Templatedatei hinzugefügt. Die ansible_*-Variablen kommen analog zum Website-Template aus den Host-facts. Das gilt jedoch nicht für webserver_name, denn da diese Variable pro Server verschieden sein soll, muss diese auch dementsprechend festgelegt werden.

Jedes Ansible-Modul kann eigenständig und in einer beliebigen Programmiersprache geschrieben sein. Dabei sollten die Module idempotent im Sinne von einem «Ansible Loop» sein. Damit, selbst wenn ein Vorgang mehrfach wiederholt wird – z.B. bei der Wiederherstellung nach einem Ausfall – das System immer in denselben Zustand versetzt wird.

Passende Lehrgänge/Kurse/Seminare: