Örneğin, bir MySQL veritabanını yedeklemek için her gün gece yarısı çalışacak bir betik planlamanız gerekiyorsa, cron modülü, zamanlamayı ve komutu doğrudan bir playbook tanımlamanıza olanak tanır ve tüm sunucularda tutarlı ve tekrarlanabilir bir yapılandırma sağlar. Bu, manuel cron giriş güncellemelerine olan ihtiyacı ortadan kaldırarak, büyük ölçekli sistemleri yönetmek veya yedekleme politikalarına uyumu sağlamak için idealdir.
Bu makalede, cron modülünün cron’da zamanlanmış görevler oluşturmak, değiştirmek ve silmek için nasıl kullanılacağını inceleyeceğiz.
Ansible Cron Modülünün Temel Sözdizimi
Cron modülü, cron işlerini tanımlamak için çok çeşitli seçenekler sunar. Modülü kullanan bir görevin temel yapısı aşağıdadır:
- name: Manage a cron job
ansible.builtin.cron:
name: "<Job_Name>"
user: "<Username>"
minute: "<Minute>"
hour: "<Hour>"
day: "<Day>"
month: "<Month>"
weekday: "<Weekday>"
job: "<Command_to_execute>"
state: "<present|absent>"
Önemli Parametreler:
name: Cron işi için benzersiz bir tanımlayıcı. Bu, Ansible’ın işi izlemesine ve yönetmesine yardımcı olur.user: İşin hangi kullanıcı için oluşturulacağını belirtir.minute,hour,day,month,weekday: Zamanlamayı standart cron sözdizimini kullanarak tanımlayın.job: Çalıştırılacak komut veya betik.state: İşin mevcut veya yok olması gerektiğini belirler.
Şimdi cron modülünü gerçek dünya senaryolarında nasıl kullanabileceğimize derinlemesine bakalım.
Yeni Bir Cron İşi Ekleme
Bir cron işi eklemek, görev adını, zamanlamayı ve yürütülecek komutu belirtmeyi içerir. Sabah 2’de günlük yedekleme gerçekleştiren bir cron işi ekleyelim.
- name: Add a daily backup cron job
hosts: all
tasks:
- name: Schedule daily backup
ansible.builtin.cron:
name: "Daily Backup"
user: "root"
minute: "0"
hour: "2"
job: "/usr/bin/backup.sh"
state: present
Bu kurulum, sistem yedeklemelerini otomatikleştirmek için idealdir. Örneğin, kuruluşunuz her gece veritabanı dökümlerine ihtiyaç duyuyorsa, bu cron işi yedeklemelerin tutarlı bir şekilde gerçekleştirilmesini sağlayabilir.
Bir Cron İşini Kaldırma
Sistemin düzenli kalması ve gereksiz görevlerden kaçınmak için güncelliğini yitirmiş veya gereksiz cron işlerini kaldırmak çok önemlidir. Bir cron işini kaldırmak için yapmanız gerekenler şunlardır:
- name: Remove a daily backup cron job
hosts: all
tasks:
- name: Remove backup job
ansible.builtin.cron:
name: "Daily Backup"
user: "root"
state: absent
Bu playbook:
state: absent: Belirtilen cron işinin crontab’dan kaldırılmasını sağlar.
Kaldırma işlemini doğrulamak için Ansible’ın hata ayıklama modülünü de ekleyebilirsiniz:
- name: Verify removal
debug:
msg: "The cron job 'Daily Backup' has been removed."
Mevcut Bir Cron İşini Değiştirme
Operasyonel gereksinimlerdeki değişiklikler nedeniyle zaman çizelgelerinde sıklıkla ayarlamalar yapılması gerekir. Günlük yedekleme işini sabah 2 yerine sabah 3’te çalışacak şekilde değiştirelim.
- name: Modify backup cron job
hosts: all
tasks:
- name: Change backup schedule to 3 AM
ansible.builtin.cron:
name: "Daily Backup"
user: "root"
minute: "0"
hour: "3"
job: "/usr/bin/backup.sh"
state: present
Bu playbooka:
hour: "3": Yürütme süresini 02:00’den 03:00’e ayarlar.state: present: Değiştirilen cron işinin var olduğundan emin olur.
Özel Zamanlama ile Bir Cron İşi Oluşturma
Bazen görevlerin daha sık aralıklarla, örneğin her 15 dakikada bir çalıştırılması gerekebilir. Böyle bir işi planlamak için şu adımları izleyin:
- name: Add a job to run every 15 minutes
hosts: all
tasks:
- name: Schedule a monitoring script
ansible.builtin.cron:
name: "System Monitoring"
user: "monitor"
minute: "*/15"
job: "/usr/bin/monitor.sh"
state: present
Bu playbook:
minute: "*/15": İşin her 15 dakikada bir çalıştırılmasını sağlayan Cron sözdizimi.job: "/usr/bin/monitor.sh": Bir izleme betiğini çalıştırır.
Bir Cron İşini Devre Dışı Bırakma
Bir cron işini kaldırmak yerine, onu geçici olarak devre dışı bırakmak isteyebilirsiniz. İşte nasıl:
- name: Disable a cron job
hosts: all
tasks:
- name: Disable the monitoring job
ansible.builtin.cron:
name: "System Monitoring"
user: "monitor"
job: "/usr/bin/monitor.sh"
disabled: yes
Bu playbook:
disabled: yes: Crontab dosyasındaki cron işini kaldırmadan yorum satırına dönüştürür. Bu, işin ileride yeniden etkinleştirilmek üzere sistemde kalmasını sağlar.