Wenn man in Ansible die Umgebung eines Hosts automatisch aus dem Hostnamen ermitteln möchte, gibt es einen einfachen Trick.
Continue reading Ansible: Umgebung anhand des Hostnamen in Variable speichernSchlagwort: ansible
ansible: object has no attribute ‚cert_file‘
Wenn man in ansible eine Task wie etwa apt_key oder uri ausführt failed das mit der Meldung:
An unknown error occurred: HTTPSConnection.__init__() got an unexpected keyword argument 'cert_file'"
Schuld daran ist eine inkompatible neuere Python Version zu älteren Ansible Versionen.
Da in älteren Ansible Versionen beim URL Handling das das Python Attribut cert_file hardcoded ist, welches ab Python 3.12 entfernt wurde, kommt hier der Fehler. Folglich lassen sich diese Ansible Versionen mit Python >= 3.12 nicht mehr nutzen.
Ansible: Zugriff auf Element in einer Liste von Verzeichnissen
Angenommen man hat eine folgende List of Dictionaries:
my_users:
- name: "user1"
password: "password!1"
home: "/home/user1"
und man möchte an anderer Stelle das Home-Verzeichnis von „user1“ auslesen, dann geht das mit den selectattr und map Filtern.
Ansible: Hostname auf der Kommandozeile mitgeben (ohne inventory Datei)
Für das ansible-playbook Kommando muss man normalerweise eine inventory Datei haben wo die Hosts drin stehen. Möchte man nun aber einfach mal schnell etwas ausführen ohne eine inventory Datei zu erstellen, gibt es einen einfachen Trick dafür.
Ansible debug task verbergen
In ansible sind debug task sehr hilfreich um neue automatisieren zu entwickeln und ab- und zu will man den „extra output“ auch im fertigen Konstrukt sehen – Aber nicht immer, sondern nur, mit speziellem Flag.
Seit ansible 2.1 gibt es das verbosity Parameter, mit dem sich das bewerkstelligen lässt. 🙂
Konfiguration mehrere Instanzen mit ansible
In manchen Szenarien gibt es mehrere Instanzen einer Software und jede hat ein eigenes systemd unit file in der Form app-instance-X.
Man kann nun natürlich durch die verschiedenen Instanzen loopen, möchte aber nur jeweils diese neu starten, wo sich die Konfiguration auch geändert hat.
Continue reading Konfiguration mehrere Instanzen mit ansibleJSON output in ansible verwenden
Hat man in einem Task JSON als Ausgabe (etwa bei einer REST-API Abfrage) könnte man auf die Werte gleich in ansible Zugreifen, welches ebenfalls JSON für die Variablen verwendet.
Zuvor muss die Ausgabe aber in JSON umgewandelt werden. Ansible stellt dazu den Filter to_json zur Verfügung.
Ansible: Globale Variablen
Normalerweise kann man in ansible nur auf die Variablen des gerade ausführenden hosts zugreifen. Ein Konzept von „Globalen Variablen“, welche im ganzen Playbook gültig sind gibt es nicht.
Man kann sich jedoch behelfen, in dem man einfach die Variablen eines bestimmten Hosts zugreift.
ansible: Rolle nur bei explizit gesetzten Tags ausführen
Manchmal hat man in seinem ansible Plabooks Rollen, die man beispielsweise nicht bei jedem Durchgang ausführen möchte, sondern nur wenn ein Tag explizit gesetzt ist.
Ein Beispiel dafür wäre eine „update“ Rolle, welche das System aktualisiert und ggf. danach den Server gleich neu startet. Das will man natürlich nicht bei jedem durchlauf machen.
Mit den zwei Spezial-Tags never und always bietet ansible hierfür die richtigen Werkzeuge.
Gleichbleibende Zufallszahlen
Manchmal braucht man in Ansible Zufallszahlen, entweder wenn man cronjobs für die Backups verteilt und nicht möchte, dass alle zur selben Zeit los gehen
Continue reading Gleichbleibende Zufallszahlen