cron ジョブを削除する
このステップでは、Ansible Cron モジュールを使用して不要な cron ジョブを削除する方法を学びます。cron ジョブの完全なライフサイクルを管理することは、システム管理者や DevOps エンジニアにとって重要なスキルです。
cron ジョブを削除する理由
cron ジョブを削除する必要がある理由はいくつかあります。
- スケジュールされたタスクがもはや必要ない場合
- 既存のジョブを新しい設定で置き換えたい場合
- システムの保守性を向上させるためにクリーンアップする必要がある場合
- タスクを一時的に無効にする必要がある場合
Ansible を使用すると、インフラストラクチャ全体で cron ジョブを体系的かつ再現可能な方法で削除することができます。
state パラメーターの理解
Ansible Cron モジュールは、state パラメーターを使用して、cron ジョブが存在するか存在しないかを制御します。
state: present - これはデフォルトです。指定された設定で cron ジョブが存在することを保証します。
state: absent - これは、cron ジョブが存在しないことを保証し、以前に作成されていた場合は削除します。
Ansible プレイブックの修正
最初に作成した cron ジョブ(名前は my_cron_job)を削除するようにプレイブックを修正しましょう。WebIDE でファイル /home/labex/project/cron_module_playbook.yaml を開き、その内容を以下のように置き換えます。
- hosts: localhost
tasks:
- name: Remove the cron job
cron:
name: my_cron_job
state: absent
このプレイブックの重要な要素は以下の通りです。
name: my_cron_job - これは、削除する cron ジョブを名前で識別します。
state: absent - これは、Ansible に cron ジョブが存在しないことを保証するように指示します。
削除する cron ジョブを識別するためには、名前を指定するだけで済みます。他のパラメーター(分、時、ジョブなど)は必要ありません。
修正後のプレイブックの実行
では、修正した Ansible プレイブックを実行して、cron ジョブを削除しましょう。ターミナルで以下のコマンドを実行します。
cd /home/labex/project
ansible-playbook cron_module_playbook.yaml
以下のような出力が表示されるはずです。
[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
changed: [localhost] という行は、cron ジョブが正常に削除されたことを示しています。
cron ジョブの削除を確認する
cron ジョブが削除されたことを確認するには、システムの crontab を確認します。
crontab -l
出力には、2 番目の cron ジョブのみが表示されるはずです。
#Ansible: custom_cron_job
0 9 * * * /home/labex/project/script.sh
my_cron_job のエントリは、プレイブックで要求された通り削除されています。
Ansible の冪等性
Ansible の重要な機能の 1 つは冪等性です。これは、同じ操作を複数回適用しても、1 回適用した場合と同じ結果になるという特性です。これは、cron ジョブの削除などのタスクに特に有用です。
これを実証するために、プレイブックを再度実行してみましょう。
ansible-playbook cron_module_playbook.yaml
以下のような出力が表示されるはずです。
[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
2 回目の実行では、削除タスクについて changed ではなく ok が表示されていることに注意してください。これは、cron ジョブはすでに削除されていたため、変更は必要なかったからです。
複数の cron ジョブを管理する
実際のシナリオでは、単一のプレイブックで複数の cron ジョブを管理する必要がある場合があります。それぞれ独自の設定を持つ複数の cron タスクを含めることができます。
- 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
このアプローチにより、単一のバージョン管理されたプレイブックですべての cron ジョブの完全なライフサイクルを管理することができます。
おめでとうございます!Ansible Cron モジュールを使用して cron ジョブを削除する方法を成功裏に学びました。これで、cron ジョブの基本的なライフサイクル管理(作成、修正、削除)が完了しました。