In diesem dritten Teil meiner Serie über RHEL System Roles nutze ich die Rolle timesync, um die NTP-Pool-Zone de.pool.ntp.org für meine Hosts zu konfigurieren.
Ich möchte mit diesem Artikel zeigen, wie einfach die Nutzung der RHEL System Roles ist, um eine Gruppe von RHEL-Servern zu konfigurieren. Dabei muss ich mich nicht um Details wie die Frage kümmern, ob auf meinen Zielhosts ntpd oder chronyd für die Zeitsynchronisierung genutzt wird. Diese Aufgabe löst die Ansible-Rolle für mich.
Bevor ich fortfahre, habe ich eine Warnung: Diese Rolle ersetzt die Konfiguration auf den Zielsystemen. Alle zuvor dort getroffenen Einstellungen werden verloren gehen.
Man muss sich also entscheiden, ob man die Zeitsynchronisation komplett über diese Rolle steuern möchte oder gar nicht.
Voraussetzungen
Auf dem Ansible-Controller müssen die Pakete ansible-core
und rhel-system-roles
installiert sein.
Das Playbook
Ich möchte mehrere NTP-Server konfigurieren. Für diesen Anwendungsfall liefert die Rolle timesync bereits ein Beispiel mit, welches ich mittels Copy-Paste-and-Modify in mein Playbook übernehme.
[root@ansible-ctrl ]# cp /usr/share/doc/rhel-system-roles/timesync/example-multiple-ntp-servers-playbook.yml ansible/use_de_ntp_servers.yml
Das Playbook sieht nach der Anpassung wie folgt aus:
- hosts: all
vars:
timesync_ntp_servers:
- hostname: 0.de.pool.ntp.org
iburst: yes
- hostname: 1.de.pool.ntp.org
iburst: yes
- hostname: 2.de.pool.ntp.org
iburst: yes
- hostname: 3.de.pool.ntp.org
iburst: yes
roles:
- rhel-system-roles.timesync
Testlauf in Labor-Umgebung
Um zu sehen, wie die Datei /etc/chrony.conf
vor und nach dem Playbook-Lauf aussieht, lasse ich das Playbook zuerst mit den Optionen -C
(aktiviert Check-Mode) und -D
(zeigt die Änderungen an) laufen. So kann ich vorab prüfen, welche Änderungen vorgenommen werden, bevor es ernst wird. Die Ausgabe ist über 500 Zeilen lang. Ich habe sie auf Gist gepostet und hier eingebunden. Wer sich für die Ausgabe nicht interessiert, kann direkt zur Zusammenfassung springen.
Anschließend habe ich das Playbook ohne die Optionen -C
und -D
ausgeführt und meine Hosts wie gewünscht konfiguriert.
Zusammenfassung
Mit der RHEL System Role timesync kann die Zeitsynchronisation verschiedener RHEL-Releases schnell und einfach konfiguriert werden, ohne Kenntnis über die konkrete Implementierung auf den Zielsystemen zu besitzen.
Gleichzeitig kann ein Blick in die Struktur der Rolle und den Inhalt der dazugehörigen Dateien Aufschluss darüber geben, wie Ansible-Rollen für mehrere RHEL-Major-Releases erstellt werden können. Man kann dies für die Erstellung eigener Rollen mit ein wenig Transferleistung wiederverwenden.
Weiterführende Quellen und Links
- Red Hat Enterprise Linux (RHEL) System Roles {en}
- Ansible Documentation: Role Directory Structure {en}
- Red Hat Software and Download Center {en}
- Die Vorteile einer Red Hat Subskription
- RHEL System Roles: selinux
- RHEL System Roles: sshd
- RHEL System Roles: firewall