Von Jan Husemann auf Dienstag, 08. September 2020
Kategorie: System Integration

Neuerungen in Ansible ab Version 2.8

Ansible ist ein sehr beliebtes Open-Source-Tool zur Orchestrierung und Konfiguration von Systemen. Am 16. Mai 2019 wurde die neue Version 2.8 auf Github veröffentlicht. Die Nachfolgeversion 2.9 wurde am 31. Oktober 2019 herausgegeben. Einige der Neuerungen werden hier vorgestellt.

Neu ist eine experimentelle Unterstützung für Ansible Collections und Namespaces. Ansible-Rollen können in einen Namespace importiert werden und auf Ansible Galaxy veröffentlicht werden. Eine Rolle oder Collection kann dann mit namespace.[role | collection]_name genutzt werden. Dies ermöglicht einfacheres Teilen und Installieren von gebündelten Modulen, Rollen und Plugins.

Wenn nicht anders konfiguriert, nutzte Ansible bisher den Python Interpreter /usr/bin/python. Ab Version 2.8 bestimmt Ansible den Python Interpreter beim erstmaligen ausführen von Python Scripts anhand von Betriebssystemplattform, Distribution und Version. Dieses Verhalten kann aber durch die Variable ansible_python_interpreter beeinflusst werden.

Das Plugin become wird in Ansible genutzt, um erhöhte Rechte auf dem Zielsystem zu erlangen. In Version 2.8 wurden die veralteten CLI-Argumente --sudo, --sudo-user, --ask-sudo-pass, --su, --su-user und --ask-su-pass entfernt. Stattdessen wurden die generischen Optionen --become, --become-user, --become-method und --ask-become-pass eingeführt.

Mit Version 2.8 gibt es in Ansible eine experimentelle Unterstützung, um per SSH auf Windows Hosts zuzugreifen. Dies kann sehr hilfreich sein, da WinRM wesentlich umständlicher zu konfigurieren ist.

Mit der neuen Version wurden auch einige veraltete Module entfernt: azure, cs_nic, ec2_remote_facts, netscaler und win_msi. Diese Module wurden durch andere, neuere Module ersetzt.

Wichtige Änderungen gibt es auch bei Schleifen in Ansible 2.8:
Es gibt neue Variablen, die innerhalb der Schleife genutzt werden können. Dafür muss die neue Option extended gesetzt sein:

Variable Beschreibung
​ansible_loop.allitems Liste mit allen Variablen der Schleife
​ansible_loop.indexAktueller Index der Schleife bei 1 beginnend
​ansible_loop.index0Aktueller Index der Schleife bei 0 beginnend
​ansible_loop.revindexAktueller Index der Schleife von hinten bei 1 beginnend
​ansible_loop.revindex0Aktueller Index der Schleife von hinten bei 0 beginnend
​ansible_loop.firstTrue bei der ersten Iteration der Schleife
​ansible_loop.lastTrue bei der letzten Iteration der Schleife
​ansible_loop.lengthAnzahl der Elemente der Schleife
​ansible_loop.previtemVorheriges Element der Schleife
​ansible_loop.nextitemNächstes Element der Schleife
ansible_loop_varName der Schleifenvariable

Zu beachten ist, dass ansible_loop.previtem und ansible_loop.nextitem in der ersten bzw. letzten Iteration nicht definiert sind. Daher darf in diesen Fällen nicht auf die Variable zugegriffen werden, sonst kommt es zu einem Fehler.

Beispiel:

Dieses Beispiel erzeugt folgende Ausgabe:

Auch in der Version 2.9 gibt es einige neue Module, vor allem aus dem Bereich des Cloud Computing für AWS und Azure. Zusätzlich wurden einige Module umbenannt: Alle _facts-Module wurden in _info umbenannt. Zum Beispiel heißt das Modul vmware_vm_facts jetzt vmware_vm_info. Diese Umbenennungen wurden gemacht, um den Namenskonventionen mehr zu entsprechen.

Damit ist die Entwicklung von Ansible natürlich noch nicht abgeschlossen: Ansible 2.10.0 steht bereits in den Startlöchern und soll am 22. September 2020 veröffentlicht werden. Auch an Ansible 2.11 wird schon gearbeitet.

Kommentare hinterlassen