2015-06-02 16 views
5

Mam crontab zawierający około 80 wpisów na serwerze. I chciałbym zarządzać tym crontab za pomocą Ansible.Zarządzaj całymi plikami crontab w Ansible

Idealnie byłoby skopiować crontab serwera do mojego katalogu Ansible i utworzyć zadanie Ansible, aby upewnić się, że crontab jest ustawiony na serwerze.

Ale wydaje się, że tylko cron module zarządza poszczególnymi wpisami cron, a nie całymi plikami crontab.

Ręczna migracja crontab do zadań Ansible jest nużąca. Nawet jeśli znajdę lub zrobię narzędzie, które zrobi to automatycznie, to uważam, że plik YAML będzie znacznie mniej czytelny niż plik crontab.

Każdy pomysł, jak poradzę sobie z tym dużym crontabem przy użyciu Ansible?

+0

Wystarczy użyć modułu 'copy', aby skopiować plik crontab do odpowiedniej lokalizacji? – larsks

+0

Nie mam uprawnień roota. – Ale

+0

Może użyć http://docs.ansible.com/assemble_module.html? Jeśli nie masz root-a, w jaki sposób zamierzasz zmodyfikować crontab? – Mxx

Odpowiedz

9

Udało mi się znaleźć prosty sposób na zrobienie tego. Skopiowałem plik crontab na serwer, a następnie zaktualizowałem plik crontab modułem powłoki, jeśli plik się zmienił.

wykonana komenda zadanie:

--- 
- 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 

W moim Playbook:

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

Wznowienie! Wskazówka: powinieneś najpierw wykonać kopię starego crona, na wypadek gdyby ręczne modyfikacje zostały wykonane poza Ansible. –

0

I rozwiązać ten problem tak:

- 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 

Zaletą tej metody (w porównaniu z zapisem w plik pośredni) jest to, że wszelkie ręczne edycje live crontab zostają usunięte i zastąpione wersją kontrolowaną przez Ansaly n. Wadą jest to, że nieco hakuje proces cron.

+0

"Zaleta ... wszelkie ręczne modyfikacje live crontab zostają usunięte" - Widzę to jako błąd. Można go łatwo rozwiązać, najpierw wykonując kopię zapasową istniejącego crona. –