Damit neue Linux-VMs die richtige Zeit finden, habe ich mir eine kleine Ansible-Rolle namens chrony erstellt, welche ich im Folgenden vorstellen möchte.
# tree chrony/
chrony/
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
└── templates
└── chrony.conf.j2
Die Rolle kommt sehr minimalistisch daher und umfasst nur die zwingend erforderlichen Verzeichnisse und Dateien. Sie ähnelt sehr stark der Rolle resolv.conf, welche ich bereits in diesem Beitrag beschrieben habe.
tasks/main.yml
---
- name: make sure chronyd is installed
yum:
name: chrony
state: latest
update_cache: yes
- name: deploy chrony.conf template
template:
src: /data/ansible/roles/chrony/templates/chrony.conf.j2
dest: /etc/chrony.conf
owner: root
group: root
mode: 0644
backup: yes
notify:
- restart chronyd
Im ersten Task nutze ich das Modul yum, um sicherzustellen, dass das chrony-Paket auch installiert ist, um dieses im zweiten Schritt zu konfigurieren.
Der zweite Task nutzt das Modul template, um aus der Datei unter roles/chrony/templates/chrony.conf.j2 die Zielkonfiguration in der Datei /etc/chrony.conf auf dem Zielsystem zu erstellen. Aktuell enthält mein Template statischen Text und ich hätte genauso gut das Modul copy nutzen können, um diese Datei auf das Zielsystem zu bringen. Ich verwende jedoch das template-Modul, um mir die Möglichkeit offen zu halten, durch Verwendung von Variablen den Inhalt dynamisch erstellen zu lassen.
Am Ende des zweiten Tasks wird ein Handler namens ‚restart chronyd‘ aufgerufen. Die Funktionsweise von Handlern habe ich bereits in DNS-Konfiguration mit Ansible beschrieben. Bitte lest für weitere Informationen dort nach.
Pingback: Die Rolle von Ansible in unserem Linux-Betriebskonzept | My-IT-Brain