Ansible lint

1. Ansible Lint Nedir ve Neden Önemli?

  • Ansible Lint, Ansible playbook’larınızı (ayrıca roller, koleksiyonlar vb.) özel kurallara göre inceleyen bir komut satırı aracıdır.

  • Playbook’larınızda olası hataları, uygunsuz stil (indentation, adlandırma vb.), yanlış modül kullanımları, hatta güvenlik veya depreceated (kullanımı önerilmeyen) yapıların kullanımını tespit eder.

  • Check mode veya diff mode Ansible’ın kendi doğrulamasıyken (gerçekte ne değişeceğini görmek), Ansible Lint daha çok “kod kalitesi, stil, en iyi pratikler” yönünden bir rehber görevi görür.

Örnek Senaryo: Büyük bir organizasyonda, zamanla yüzlerce playbook yazıyorsunuz. Kod kalitesini korumak için, her playbook’u yazdıktan/değiştirdikten sonra Ansible Lint çalıştırarak tutarsızlıkları erkenden yakalayabilirsiniz.

2. Nasıl Kurulur ve Nasıl Çalıştırılır?

  1. Kurulum

    • Genellikle pip üzerinden kurabilirsiniz:

      pip install ansible-lint
    • Veya sistem paket yöneticisinden (dağıtıma göre apt-get install ansible-lint, vb.).

  2. Çalıştırma

    • Temel kullanım:

      ansible-lint <playbook_dosyası>.yml
    • Komut, playbook içindeki potansiyel hataları ve uyarıları listeleyecektir.

3. Lint Yaparken Karşılaşabileceğiniz Uyarılara Örnekler

Örneğin style_example.yml adında bir playbook’unuz var ve içerisinde stilde veya modül kullanımında bazı sorunlar var. ansible-lint style_example.yml dediğinizde şu tip uyarılar alabilirsiniz:

[WARNING]: incorrect indentation: expected 2 but found 4 (syntax/indentation)
style_example.yml:6

[WARNING]: command should not contain whitespace (blacklisted: ['apt']) (commands)
style_example.yml:6

[WARNING]: Use shell only when shell functionality is required (deprecated in favor of 'cmd') (commands)
style_example.yml:6

[WARNING]: command should not contain whitespace (blacklisted: ['service']) (commands)
style_example.yml:12

[WARNING]: 'name' should be present for all tasks (task-name-missing) (tasks)
style_example.yml:14

Uyarıların Anlamı

  1. incorrect indentation: Satır 6’da girinti hatası (2 boşluk yerine 4 boşluk).

  2. command should not contain whitespace: Bazı modüller (apt, service) komut modülüyle değil, kendi özel modülleriyle kullanılmalı.

  3. Use shell only when shell functionality is required: shell: modülünü gereksiz kullanmak yerine command: veya ilgili modülü kullanmanız önerilir.

  4. task-name-missing: Bütün task’lerin name: parametresi olmalı (kolay okunabilirlik ve hata ayıklama için).

4. Ortaya Çıkan Uyarıları Nasıl Düzeltiriz?

  • Girinti Hatası: YAML formatında en yaygın hatalardan biri, her task’in 2 boşlukla (veya 4 ama tutarlı şekilde) girintilenmesi. Ansible Lint “2 bekliyorum, 4 buldum” diyorsa, tüm satırları tutarlı hale getirin.

  • Kullandığınız modülü gözden geçirin: Örneğin bir paket kuracaksanız apt veya yum gibi ilgili modülleri kullanın, shell/command ile paket kurmaktan kaçının.

  • Ek parametreler: Mesela “update_cache: yes” gibi en iyi pratikleri eklemeniz de tavsiye edilebilir.

Uyarılar bazen “hata” değil “öneri” olabilir. Kendi kod standartlarınıza göre karar verebilirsiniz. Ama genelde Ansible Lint uyarıları en iyi uygulamalara işaret eder.

5. Eğer Sessiz Kalırsa?

  • “No issues found” veya hiçbir çıktı yoksa, demek ki Ansible Lint playbook’unuzu hatasız/stil olarak düzgün bulmuş. Tebrikler!

  • Düzenli olarak lint işlemini CI/CD pipeline 'nıza ekleyerek, kod kalitesini her değişiklikte otomatik kontrol edebilirsiniz.

6. Sonuç ve Özet

  • Check/ Diff mode: “Bu playbook çalışırsa, sistemde ne değişecek/ gerçekte nasıl davranacak?”

  • Ansible Lint: “Bu playbook kod kalitesi ve en iyi pratikler açısından doğru mu? Girintiler, modül kullanımı, isimlendirme tutarlı mı?”

  • Lint’i kullanmak, playbook’larınız büyüdükçe tutarlılık ve kalite sağlar, hataları erken farkettirir.

Last updated

Was this helpful?