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.
🔸
templateplug-in’i iletemplatemodü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
k8smodü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