2015-06-02 2 views
5

Ich habe eine Crontab mit etwa 80 Einträge auf einem Server. Und ich möchte diese Crontab mit Ansible verwalten.Verwalten ganze Crontab-Dateien in Ansible

Idealerweise würde ich die crontab des Servers in mein Ansible-Verzeichnis kopieren und eine Ansible-Aufgabe erstellen, um sicherzustellen, dass crontab auf dem Server gesetzt ist.

Aber die cron module scheint nur einzelne Cron-Einträge und nicht ganze Crontab-Dateien zu verwalten.

Das manuelle Migrieren der Crontab zu Ansible-Tasks ist mühsam. Und selbst wenn ich ein Tool finde oder mache, das es automatisch ausführt, fühle ich, dass die YAML-Datei viel weniger lesbar ist als die Crontab-Datei.

Irgendeine Idee, wie ich diese große Crontab mit Ansible umgehen kann?

+0

Verwenden Sie einfach das Kopieren-Modul, um die Crontab an die entsprechende Stelle zu kopieren? – larsks

+0

Ich habe keine Root-Rechte. – Ale

+0

Vielleicht verwenden Sie http://docs.ansible.com/assemble_module.html? Wenn du keine root hast, wie willst du crontab ändern? – Mxx

Antwort

9

Ich habe es geschafft, einen einfachen Weg zu finden, es zu tun. Ich kopiere die Crontab-Datei auf den Server und aktualisiere die Crontab mit dem Shell-Modul, wenn sich die Datei geändert hat.

Die crontab Aufgabe:

--- 
- name: Ensure crontab file is up-to-date. 
    copy: src=tasks/crontab/files/{{ file }} dest={{ home }}/cronfile 
    register: result 
- name: Ensure crontab file is active. 
    shell: crontab cronfile 
    when: result|changed 

In meinem Textbuch:

- include: tasks/crontab/main.yml file=backend.cron 
+0

Upvoted! Tipp: Sie sollten das alte Cron zuerst sichern, falls manuelle Änderungen außerhalb von Ansible vorgenommen wurden. –

0

Ich löste dieses Problem wie folgt aus:

- name: Save out Crontabs 
    copy: src=../files/crontabs/{{ item }} dest=/var/spool/cron/{{ item }} owner={{item}} mode=0600 
    notify: restart cron 
    with_items: 
    - root 
    - ralph 
    - jim 
    - bob 

Der Vorteil dieser Methode (im Gegensatz zu einem Schreiben intermediate file) ist, dass manuelle Bearbeitungen der Live-Crontab entfernt und durch die Ansible-kontrollierte Version ersetzt werden n. Der Nachteil ist, dass es den Cron-Prozess etwas hackt.

+0

"Der Vorteil ... alle manuellen Bearbeitungen der Live Crontab werden entfernt" - Das würde ich als Bug sehen. Es kann leicht gelöst werden, indem zuerst das vorhandene Cron gesichert wird. –