Ansible Conditionals based on facts, variables, re-use
1. OS Tabanlı Koşullar (Facts Kullanımı)
Diyelim ki filonuzda Ubuntu 18.04, CentOS 7, ve Windows Server 2019 var. Bazı görevleri sadece belirli işletim sistemlerinde çalıştırmak isteyebilirsiniz. İşte burada Ansible Facts devreye girer.
Ansible Facts nedir?
Ansible, her hedef makineye bağlanıp sistem bilgilerini toplar (OS türü, sürüm, vs.). Bu bilgilere
ansible_facts[...]
üzerinden ulaşabilirsiniz.Örnek:
ansible_facts['os_family']
,ansible_facts['distribution_major_version']
.
Örnek Senaryo:
Ubuntu 18.04 üzerinde belirli bir Nginx sürümünü kuracaksınız.
Koşul ifadesi (when) şu şekilde olabilir:
Böylece yalnızca Ubuntu 18.04 olan makinelerde bu görev çalışır; CentOS veya Windows’ta atlanır (skipped).
Neden Faydalı?
Aynı playbook içinde Debian ve RedHat gibi farklı OS’lere özel görevleri ayırabilir, tek bir dosya ile tüm makineleri yönetebilirsiniz.
2. Değişken (Variable) Tabanlı Koşullar
Sıklıkla, ortamlara (development, staging, production) göre farklı yapılandırmalar gerekebilir. Bunu bir değişken (örn. app_env
) kullanarak kolayca yönetebilirsiniz.
Örnek:
app_env
değişkenineproduction
veyastaging
atarsanız, sırasıylaproduction_config.j2
veyastaging_config.j2
dosyasını uygular.
Koşul Eklemek:
Örneğin, “Production dışında konfig dosyasını yükleme” gibi bir ifadeniz varsa:
Değişkeni envanterde (inventory), group_vars, host_vars veya playbook içinde
vars:
tanımlayabilirsiniz.
Neden Faydalı?
Farklı ortamlara (dev, staging, prod) göre tek bir playbook kullanabilir, sadece değişkeni değiştirerek farklı yapılandırmaları otomatik uygulayabilirsiniz.
3. Görevleri Yeniden Kullanırken (Re-Use) Koşullar
Bazen tüm sunucularda çalışacak ortak görevleriniz olur (örn. paket kurma, dizin oluşturma), ancak bazı eylemleri sadece belirli bir ortama (production) veya belirli bir OS’ye yönelik yapmak istersiniz.
Örnek:
İlk iki görev her sunucuda çalışır (paket kurma, dizin oluşturma).
Son görev sadece “environment” değişkeni “production” olan makinelerde çalışır.
Last updated
Was this helpful?