Entfernen eines cron-Jobs
In diesem Schritt lernen Sie, wie Sie unerwünschte cron-Jobs mithilfe des Ansible Cron-Moduls entfernen können. Das Verwalten des gesamten Lebenszyklus von cron-Jobs ist eine wichtige Fähigkeit für Systemadministratoren und DevOps-Engineer.
Gründe für das Entfernen von cron-Jobs
Es gibt mehrere Gründe, warum Sie möglicherweise cron-Jobs entfernen müssen:
- Die geplante Aufgabe wird nicht mehr benötigt.
- Sie möchten einen bestehenden Job durch eine neue Konfiguration ersetzen.
- Sie müssen das System aufräumen, um die Wartbarkeit zu verbessern.
- Die Aufgabe muss vorübergehend deaktiviert werden.
Ansible erleichtert es Ihnen, cron-Jobs auf systematische und wiederholbare Weise in Ihrer gesamten Infrastruktur zu entfernen.
Grundlagen des state-Parameters
Das Ansible Cron-Modul verwendet den Parameter state
, um zu steuern, ob ein cron-Job vorhanden oder nicht vorhanden sein soll:
state: present
- Dies ist die Standardeinstellung. Sie stellt sicher, dass der cron-Job mit der angegebenen Konfiguration existiert.
state: absent
- Dies stellt sicher, dass der cron-Job nicht existiert und entfernt ihn, falls er zuvor erstellt wurde.
Anpassen des Ansible-Playbooks
Lassen Sie uns unser Playbook anpassen, um den ersten von uns erstellten cron-Job (mit dem Namen my_cron_job
) zu entfernen. Öffnen Sie die Datei /home/labex/project/cron_module_playbook.yaml
im WebIDE und ersetzen Sie ihren Inhalt durch Folgendes:
- hosts: localhost
tasks:
- name: Remove the cron job
cron:
name: my_cron_job
state: absent
Die wichtigsten Elemente dieses Playbooks sind:
name: my_cron_job
- Dies identifiziert den zu entfernenden cron-Job anhand seines Namens.
state: absent
- Dies teilt Ansible mit, sicherzustellen, dass der cron-Job nicht existiert.
Beachten Sie, dass wir nur den Namen des cron-Jobs angeben müssen, um ihn für die Entfernung zu identifizieren. Die anderen Parameter (wie Minute, Stunde, Job usw.) sind nicht erforderlich.
Ausführen des angepassten Playbooks
Jetzt führen Sie das angepasste Ansible-Playbook aus, um den cron-Job zu entfernen. Führen Sie im Terminal den folgenden Befehl aus:
cd /home/labex/project
ansible-playbook cron_module_playbook.yaml
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
[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
Die Zeile changed: [localhost]
gibt an, dass der cron-Job erfolgreich entfernt wurde.
Überprüfen der Entfernung des cron-Jobs
Um zu überprüfen, ob der cron-Job entfernt wurde, überprüfen Sie die crontab auf dem System:
crontab -l
Sie sollten jetzt nur den zweiten cron-Job in der Ausgabe sehen:
#Ansible: custom_cron_job
0 9 * * * /home/labex/project/script.sh
Der Eintrag my_cron_job
wurde entfernt, wie in unserem Playbook angefordert.
Idempotenz in Ansible
Eines der wichtigsten Merkmale von Ansible ist die Idempotenz - die Eigenschaft, dass das mehrmalige Anwenden der gleichen Operation dasselbe Ergebnis liefert wie das einmalige Anwenden. Dies ist besonders nützlich für Aufgaben wie das Entfernen von cron-Jobs.
Lassen Sie uns das Playbook erneut ausführen, um dies zu demonstrieren:
ansible-playbook cron_module_playbook.yaml
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
[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
Beachten Sie, dass beim zweiten Mal die Ausgabe für die Entfernungstask ok
anstelle von changed
anzeigt. Dies liegt daran, dass der cron-Job bereits entfernt wurde, sodass keine Änderungen erforderlich waren.
Verwalten mehrerer cron-Jobs
In realen Szenarien müssen Sie möglicherweise mehrere cron-Jobs in einem einzigen Playbook verwalten. Sie können mehrere cron-Tasks einschließen, jeder mit seiner eigenen Konfiguration:
- 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
Dieser Ansatz ermöglicht es Ihnen, den gesamten Lebenszyklus aller Ihrer cron-Jobs in einem einzigen, versionskontrollierten Playbook zu verwalten.
Herzlichen Glückwunsch! Sie haben erfolgreich gelernt, wie Sie cron-Jobs mithilfe des Ansible Cron-Moduls entfernen können. Damit ist die grundlegende Lebenszyklusverwaltung von cron-Jobs abgeschlossen: Erstellung, Modifikation und Entfernung.