Remover uma Tarefa Cron
Nesta etapa, você aprenderá como remover tarefas cron indesejadas usando o módulo Ansible Cron. Gerenciar o ciclo de vida completo das tarefas cron é uma habilidade importante para administradores de sistema e engenheiros de DevOps.
Por que Remover Tarefas Cron
Existem várias razões pelas quais você pode precisar remover tarefas cron:
- A tarefa agendada não é mais necessária
- Você deseja substituir uma tarefa existente por uma nova configuração
- Você precisa limpar o sistema para melhorar a capacidade de manutenção
- A tarefa precisa ser desativada temporariamente
O Ansible facilita a remoção de tarefas cron de forma sistemática e repetível em toda a sua infraestrutura.
Entendendo o Parâmetro State
O módulo Ansible Cron usa o parâmetro state para controlar se uma tarefa cron deve estar presente ou ausente:
state: present - Este é o padrão. Ele garante que a tarefa cron exista com a configuração especificada.
state: absent - Isso garante que a tarefa cron não exista, removendo-a se ela foi criada anteriormente.
Modificando o Playbook Ansible
Vamos modificar nosso playbook para remover a primeira tarefa cron que criamos (chamada my_cron_job). Abra o arquivo /home/labex/project/cron_module_playbook.yaml no WebIDE e substitua seu conteúdo pelo seguinte:
- hosts: localhost
tasks:
- name: Remove the cron job
cron:
name: my_cron_job
state: absent
Os elementos-chave deste playbook são:
name: my_cron_job - Isso identifica a tarefa cron a ser removida por seu nome.
state: absent - Isso diz ao Ansible para garantir que a tarefa cron não exista.
Observe que só precisamos especificar o nome da tarefa cron para identificá-la para remoção. Os outros parâmetros (como minuto, hora, tarefa, etc.) não são necessários.
Executando o Playbook Modificado
Agora, execute o playbook Ansible modificado para remover a tarefa cron. No terminal, execute o seguinte comando:
cd /home/labex/project
ansible-playbook cron_module_playbook.yaml
Você deve ver uma saída semelhante a esta:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Remove the cron job] *****************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
A linha changed: [localhost] indica que a tarefa cron foi removida com sucesso.
Verificando a Remoção da Tarefa Cron
Para verificar se a tarefa cron foi removida, verifique o crontab no sistema:
crontab -l
Você deve agora ver apenas a segunda tarefa cron na saída:
#Ansible: custom_cron_job
0 9 * * * /home/labex/project/script.sh
A entrada my_cron_job foi removida, conforme solicitado em nosso playbook.
Idempotência no Ansible
Uma das principais características do Ansible é a idempotência - a propriedade de que aplicar a mesma operação várias vezes dá o mesmo resultado que aplicá-la uma vez. Isso é especialmente útil para tarefas como remover tarefas cron.
Vamos executar o playbook novamente para demonstrar isso:
ansible-playbook cron_module_playbook.yaml
Você deve ver uma saída semelhante a:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Remove the cron job] *****************************************************
ok: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Observe que, na segunda vez, a saída mostra ok em vez de changed para a tarefa de remoção. Isso ocorre porque a tarefa cron já foi removida, portanto, nenhuma alteração foi necessária.
Gerenciando Múltiplas Tarefas Cron
Em cenários do mundo real, você pode precisar gerenciar várias tarefas cron em um único playbook. Você pode incluir várias tarefas cron, cada uma com sua própria configuração:
- hosts: localhost
tasks:
- name: Remove first cron job
cron:
name: job1
state: absent
- name: Create second cron job
cron:
name: job2
minute: "0"
hour: "12"
job: /path/to/script.sh
- name: Update third cron job
cron:
name: job3
minute: "*/10"
job: /path/to/another/script.sh
Essa abordagem permite que você gerencie o ciclo de vida completo de todas as suas tarefas cron em um único playbook com controle de versão.
Parabéns! Você aprendeu com sucesso como remover tarefas cron usando o módulo Ansible Cron. Isso completa o gerenciamento básico do ciclo de vida das tarefas cron: criação, modificação e remoção.