Ansible Tipp: Markierung verwalteter Dateien

1.Januar 2025

In diesem Tipp zeige ich euch, wie ihr in euren Konfigurationsdateien eine Kennzeichnung einfügt, um deutlich zu machen, dass diese von Ansible verwaltet werden.

Ansible-Templates und die Variable ansible_managed

Beim Deployment von Konfigurationsdateien mit Ansible wird oft ein template-Task verwendet. Ansible stellt hierfür die Variable ansible_managed bereit, die ihr am Anfang eures Templates einfügen könnt:

1# {{ ansible_managed }}
2[section]
3key = value
4...

Nach der Verarbeitung durch Ansible könnte die Datei dann beispielsweise so aussehen:

# ansible_managed
[section]
key = value
...

Das allein ist zwar hilfreich, aber die Standardausgabe von ansible_managed ist nicht besonders aussagekräftig. Glücklicherweise lässt sich die Variable in der ansible.cfg anpassen.

Anpassung der ansible_managed-Variable

In der ansible.cfg könnt ihr festlegen, wie die ansible_managed-Zeile aussehen soll:

1[defaults]
2ansible_managed = This file is managed by Ansible, changes will be overwritten.

Nun würde der Header so aussehen:

# This file is managed by Ansible, changes will be overwritten.
[section]
key = value
...

Dynamische Informationen hinzufügen

Noch besser wird es, wenn ihr zusätzliche Variablen in ansible_managed integriert. Ihr könnt z. B. den Dateinamen, das Änderungsdatum, den Benutzer und den Host in die Markierung aufnehmen:

1[defaults]
2ansible_managed = This file is managed by Ansible: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}

Nach der Template-Verarbeitung könnte die Datei dann so aussehen:

# This file is managed by Ansible: templates/test.file.j2 modified on 2024-08-07 11:54:37 by schmidm on tux02
[section]
key = value
...

Mit dieser Methode könnt ihr jederzeit nachvollziehen, wann und von wem eine Konfigurationsdatei zuletzt geändert wurde – eine nützliche Ergänzung für jedes automatisierte Deployment mit Ansible.