Lookup Plug-in Nedir?
Lookup plug-in (eklenti), Ansible içinde Jinja2 şablonlama dili ile çalışan bir uzantıdır. Bu eklentiler sayesinde:
-
Dosyalardan,
-
Komut çıktılarından,
-
URL’lerden,
-
Ortam değişkenlerinden,
-
Kubernetes API gibi harici sistemlerden veri çekebiliriz.
🔧 Lookup ve Query Fonksiyonları
Ansible’da lookup plug-in’leri iki şekilde çağırabiliriz:
1. lookup()
Fonksiyonu
Bu fonksiyon dış kaynaktan veri çeker ve sonucu virgülle ayırarak düz bir string (metin) olarak verir.
📌 Bu ifade, her iki dosyanın içeriğini tek bir metin olarak virgülle ayırarak hosts
değişkenine atar.
2. query()
Fonksiyonu
lookup()
ile benzer çalışır ama liste (list) olarak sonuç döndürür. Yani işlemek daha kolay olur.
Bu ifade şu sonucu döndürür:
📂 Dosya İçeriği Okuma (file
Plug-in’i)
Dosya içeriğini okumak için ansible.builtin.file
plug-in’i kullanılır:
Bu şekilde YAML dosyası otomatik olarak sözlük (dict) haline getirilir.
📌 Dikkat: Dosya, playbook çalıştığı ortamda olmalı (execution environment). Eğer ansible-navigator
ile --ee false kullanılırsa, kontrol nodu olur.
🔑 Örnek: Public Key Eklemek
Bu örnekte remzi.key.pub
ve admin.key.pub
dosyaları okunur ve ilgili kullanıcıya atanır.
🧠 Lookup Yerine slurp
Kullanımı (Uzak Dosyalar)
Eğer dosya hedef (managed) host üzerindeyse slurp
modülü kullanılır:
📝 Template Dosyası Okuma
Eğer dosya bir Jinja2 şablonu ise template
plug-in’i ile işlenir:
Şablon içeriği örneğin şöyle olabilir:
name: class
olduğunda çıktı: Hello class.
olur.
🔸
template
plug-in’i iletemplate
modülü farklı şeylerdir.
🖥 Komut Çıktısı Okuma (pipe
ve lines
)
Ansible içinden komut çalıştırıp çıktı almak için:
pipe
: Çıktıyı tek string olarak döner
lines
: Çıktıyı satır satır liste döner
🌐 URL'den Veri Çekme
Bir URL içeriğini almak için:
Bu veri JSON/YAML filtreleriyle işlenebilir.
☸️ Kubernetes Verisi Alma
Kubernetes’ten veri almak için:
Bu plug-in okuma içindir. Güncelleme işlemleri için
k8s
modülü kullanılır.
🧩 Özel Lookup Plug-in Yazmak
Kendi lookup plug-in’lerinizi Python ile yazıp aşağıdaki dizinlerden birine koyarak kullanabilirsiniz:
-
lookup_plugins/
-
filter_plugins/
-
Collection kullanıyorsanız
plugins/lookup/
⚠️ Hatalarla Baş Etme
Varsayılan olarak bir dosya bulunamazsa lookup
hata verir. Ama bu davranışı değiştirebilirsiniz:
-
strict
: Hata varsa durur (varsayılan) -
warn
: Uyarı verir, boş değer döner -
ignore
: Sessizce devam eder
📚 Referanslar
-
ansible-navigator doc --mode stdout -t lookup -l
-
ansible-navigator doc --mode stdout -t lookup <PLUGIN_ADI>
Hiç yorum yok:
Yorum Gönder