Automatisierung einfach gemacht: Module Defaults und Module Default Groups in Ansible
Ansible ist eines der weitverbreitetsten Tools in der IT-Welt, wenn es um Konfigurationsmanagement geht. Dennoch schöpfen viele Teams das volle Potenzial von Ansible nicht aus.
Ein oft übersehener, aber sehr effektiver Mechanismus zur Vereinfachung von Ansible-Projekten sind die sogenannten Module Defaults und Module Default Groups (auch bekannt als action_groups). Mit ihnen lassen sich Parameter zentral definieren und redundant wiederholte Konfigurationen vermeiden.
In diesem Beitrag zeigen wir euch, wie ihr diese Funktionen gezielt einsetzen könnt – für schlankere Playbooks, mehr Übersicht und weniger Fehlerquellen.
Warum überhaupt Module Defaults?
Ansible bietet eine Vielzahl an eingebauten Modulen oder Modulen aus öffentlichen Ansible-Collections, um die Automatisierung vieler Aufgaben zu vereinfachen. In einem typischen Ansible-Projekt werden bestimmte Module mehrfach verwendet, häufig sogar mit den gleichen Parametern. Jeder dieser Aufrufe muss normalerweise erneut mit denselben Angaben versehen werden. Dies führt zu Redundanz, höherem Pflegeaufwand und steigender Fehleranfälligkeit.
Genau hier setzen Module Defaults an: Sie ermöglichen die zentrale Definition von Standardparametern, die automatisch für alle Tasks eines Moduls gelten.
Module Defaults im Einsatz
Module Defaults lassen sich innerhalb eines Playbooks oder einer Rolle festlegen. Dazu wird ein zusätzlicher Block „module_defaults:“ definiert. Innerhalb dieses Blocks werden dann über den eindeutigen Identifier des entsprechenden Moduls Default Parameter definiert. Diese Werte gelten dann für alle Aufrufe dieses Moduls, sofern im Task nichts anderes angegeben ist. Diese Default Parameter können beim Aufruf des Moduls selbstverständlich auch wieder überschrieben werden.
Beispiel
- hosts: localhost
module_defaults:
ansible.builtin.debug:
msg: "Dies ist die Standard Nachricht"
tasks:
- name: Default debug message
ansible.builtin.debug:
- name: Different debug message
ansible.builtin.debug:
msg: "Dies ist eine andere Nachricht"
Der erste Task nutzt die Standardwerte aus module_defaults, der zweite überschreibt die Default Message.
Angenommen, ihr verwendet in eurem Playbook mehrere MySQL-Module aus der Collection community.mysql, z. B.:
community.mysql.mysql_db– um Datenbanken anzulegencommunity.mysql.mysql_user– um Benutzer:innen zu verwaltencommunity.mysql.mysql_query– um SQL-Statements auszuführen
Alle diese Module benötigen dieselben Login-Parameter (login_user, login_password, login_host usw.). Statt für jedes Modul eigene Defaults zu definieren, bietet Ansible die Möglichkeit, sogenannte Module Default Groups zu verwenden.
Module Default Groups / Action Groups in Ansible Collections
Häufig nutzen wir in unseren Ansible Projekten externe Collections, welche uns durch eine Vielzahl an mitgelieferten Modulen die automatisierte Konfiguration unseres Projektes vereinfachen. Viele dieser Module nutzen gleiche Parameter, beispielsweise für die Authentifizierung bei Datenbanksystemen. Damit wir diese Parameter nicht für jedes genutzte Modul als Default festlegen müssen, haben Collections die Möglichkeit in der Datei „meta/runtime.yml“ sogenannte „action_groups“ zu definieren. In diesen können dann verschiedene Module unter Gruppennamen zusammengefasst werden:
requires_ansible: '>=2.9.10'
action_groups:
all:
- mysql_db
- mysql_info
- mysql_query
- mysql_replication
- mysql_role
- mysql_user
- mysql_variables
Diese Gruppennamen können von uns genutzt werden, um Defaults für alle dort definierten Module zu setzen. Dabei wird beim Aufruf der Gruppe in „module_defaults“ das Schlüsselwort „group/“ gefolgt vom Identifier der Collection und dem Namen der „action_group“ genutzt.
module_defaults:
group/community.mysql.all:
login_host: "{{ hostname }}"
login_password: ordix
login_port: 3306
login_user: root
Nicht jede Collection definiert bereits Action Groups. In diesem Fall können wir in der lokal installierten Collection selbst unter meta/runtime.yml eigene Gruppen anlegen und erweitern.
Fazit
Module Defaults und Module Default Groups sind leistungsstarke Werkzeuge, um Ansible-Projekte zu vereinfachen und wartbarer zu gestalten. Sie ermöglichen:
- Zentrale Verwaltung häufig genutzter Parameter
- Weniger Redundanz im Code
- Schnellere Anpassung und geringere Fehleranfälligkeit
- Mehr Übersicht bei wachsender Projektgröße
Gerade bei größeren Infrastrukturen sorgen diese Features für mehr Effizienz und Sicherheit, sei es beim Deployment, in DevOps-Workflows oder beim Betrieb komplexer Datenbanksysteme.
Seid ihr bereit, eure DevOps-Prozesse auf das nächste Level zu heben? Kontaktiert uns noch heute und lasst euch von unseren IT-Expert:innen beraten!
Seminarempfehlungen
KONFIGURATIONSMANAGEMENT MIT ANSIBE [ANSIB-01]
Mehr erfahrenANSIBLE FÜR FORTGESCHRITTENE [ANSIB-02]
Mehr erfahrenJunior Consultant bei ORDIX
Kommentare