ansible-lint nedir? 1


Giriş

Yaml1 yazması kolay bir format olsada küçük bir hata yapıldığında, farketmesi çok uzun zamanlar alabiliyor. Bunda en büyük etken, .yml dosyalarının girinitiler(indentation) ile çalışmasıdır. Ansible ile uğraştıysanız ve modüllere hakimseniz bunu kullanmak yazdığınız Playbook’lar ile bunu tecrübe etmişsinizdir Bu yazıda, bende bu sıkıntıyı nasıl minimuma indirip standarda uygun playbook’lar nasıl yazılır onu anlatacağım.

ansible-lint sizin yazdığınız Playbook’larda YAML ve Ansible formatının nerelerinde hata olduğunu size bildiren mekanizmadır. Karşılaştırma yaparsak Python’daki PEP8 standartının, Ansible karşılığı denilebilir.

Kurulum

Kurulum gayet basit

Kullanım

Diyelim elimizde /var/www nin altındaki dosyalardan 4 haftadan eski 1 Megabyte’tan eski olan dosyaları gösteren ve yum paket reposundaki programları üst versiyona geçiren bir playbook  olsun.2

Kaydedilen dosyayı test edelim.

Gördüğünüz gibi dosyadaki satırlarda göre nerede yanlışlar olduğunu söylüyor. Düzeltmeside pek zor olmasa gerek.

Yapı nasıl çalışıyor

İşi biraz daha sistematik incelersek yapının pek fazla karmaşık olmadığını görebiliriz.

ansible-lint -L parametresi ile çalıştırdığımızda

Kod bloğunda görüldüğü gibi kuralların listelenmiş bir şekli var. Github’da bulunan repodaki kodları incelerseniz yapının içeriğinin, Regular Expression ağırlıklı olduğunu göreceksiniz.

Son olarak ansible-lint, tam bir debugger manası ile çalışmayıp sadece syntax yapısını ölçen bir yapısı olduğunu söyleyebilirim. Yani bu sizin ansiblenizin kesin çalışacağı anlamına gelmiyor yani sonuç odaklı değil, usül ve yöntem odaklı bir çözüm.

Umarım işinize yarar.

Daha fazlası için:

Eğer Emacs kullanıyorsanız, girintileri daha güzel görebileceğiniz şekilde ayarlamalar yapıp üstüne birde hata yakalama işleminin nasıl olduğunu anlatan bir blog yazısının, sizin için de faydanıza olacağını düşünyorum.