Ansible playbook для просмотра cron на удаленных серверах

Написал небольшой playbook для копирования задач крон в отдельный файл на серверах.

- name: crontab jobs list on all servers
  hosts: all
  become: yes

  vars:
    file: /var/log.txt

  tasks:
  - name:

    shell: "echo '########################################' >> {{ file }} && echo server_name: {{ ansible_hostname }} >> {{ file }} && echo server_ip: {{ ansible_all_ipv4_addresses }} >> {{ file }} && crontab -l >> {{ file }}; crontab -l 2>> {{ file }}

Все работает, но криво - хотелось бы иметь отдельный файл на сервере ansible со всеми задачами cron.

Добавил в плейбук

 tasks:
  - name:

    shell: "echo '########################################' >> {{ file }} && echo server_name: {{ ansible_hostname }} >> {{ file }} && echo server_ip: {{ ansible_all_ipv4_addresses }} >> {{ file }} && crontab -l >> {{ file }}; crontab -l 2>> {{ file }}

    delegate_to: 127.0.0.1

Файл создался, но почему-то все значения - no crontab for root, хотя на одном сервере были задачи в cron.

root@lab:/home/user# cat /var/log.txt
########################################
server_name: lab
server_ip: [10.0.2.15, 172.16.22.221]
no crontab for root
########################################
server_name: 10
server_ip: [10.0.2.15, 172.16.22.224]
no crontab for root
########################################
server_name: lab2
server_ip: [172.16.22.223, 10.0.2.15]
no crontab for root

Помогите разобраться в чем причина.


Ответы (1 шт):

Автор решения: eri

Потому что crontab -l показывает только задачи которые добавленны через crontab -e

Хранятся они в /var/spool/cron/crontabs/, там есть списки и для других пользователей. Дергай через

cat /var/spool/cron/crontabs/*

Системный /etc/crontab и /etc/cron.d/ там не отображаются. Тоже проще через cat

cat /etc/crontab
cat /etc/cron.d/*

Вместо звездочки напиши цикл чтоб имена файлов указать:

for i in /etc/cron.d/*
do
  echo Файл "$i"
  cat "$i"
done

Следует заглянуть ещё через ls

ls /etc/cron.daily/   /etc/cron.hourly/  /etc/cron.monthly/ /etc/cron.weekly/
→ Ссылка