Gestão Avançada de Tarefas Cron
Embora o uso básico do módulo cron do Ansible seja direto, existem várias técnicas e funcionalidades avançadas que podem ajudá-lo a gerir tarefas cron de forma mais eficaz.
Execução Condicional de Tarefas Cron
Às vezes, pode querer executar uma tarefa cron apenas quando certas condições forem cumpridas. Pode conseguir isto usando as instruções condicionais do Ansible, como as cláusulas when:
- hosts: all
tasks:
- name: Executar script de backup se o uso do disco estiver acima de 80%
cron:
name: Executar script de backup
minute: "*/1"
job: /opt/scripts/backup.sh
when: ansible_facts['ansible_devices']['sda']['percent_used'] > 80
Neste exemplo, a tarefa cron só será criada se o uso do disco no dispositivo sda estiver acima de 80%.
Templates de Tarefas Cron
Se tiver várias tarefas cron com configurações semelhantes, pode usar templates Jinja2 para tornar os seus playbooks Ansible mais manuteníveis. Aqui está um exemplo:
- hosts: all
tasks:
- name: Criar tarefa cron a partir de um template
cron:
name: "{{ item.name }}"
minute: "{{ item.minute }}"
job: "{{ item.job }}"
loop:
- {
name: "Executar script de backup",
minute: "*/1",
job: "/opt/scripts/backup.sh"
}
- {
name: "Gerar relatórios",
minute: "0 3",
job: "/opt/scripts/generate_reports.sh"
}
loop_control:
loop_var: outer_item
Neste exemplo, as configurações das tarefas cron são definidas como uma lista de dicionários, que são depois percorridos e aplicados aos hosts remotos.
Validação de Tarefas Cron
Para garantir que as suas tarefas cron estão configuradas corretamente, pode usar o plugin de pesquisa cron_job para validar as tarefas cron existentes nos hosts remotos:
- hosts: all
tasks:
- name: Validar tarefas cron
assert:
that:
- "'Executar script de backup' in cron_job"
- "'Gerar relatórios' in cron_job"
vars:
cron_job: "{{ lookup('cron_job') }}"
Esta tarefa utiliza o plugin de pesquisa cron_job para recuperar a lista de tarefas cron nos hosts remotos e, em seguida, afirma que as tarefas cron esperadas estão presentes.
Ao incorporar estas técnicas avançadas, pode criar soluções de gestão de tarefas cron mais robustas e flexíveis com o Ansible.