Ansible Nedir 4 2


Bu blog yazısında, Ansible’nin esas kullanım amacı olan, Playbook kısmına geçmiş bulunmaktayız. Bu playbook yapısını kavramanız ile birlikte başkalarının tecrübelerinden faydalanıp kendinize daha kaliteli çalışma ortamları yaratabileceksiniz. Her ne kadar bundan önce öğrendiğimiz ad-hoc komutlar faydalı olsada, playbooklar ile  yönetmenin kolaylığını ve şeffaflığını vermeyecek diyebilirim.

Çünkü Ansible playbook’ları ile yönetilen bir ortam size;

  • Düzenlenebilir
  • Programlanabilir
  • Kontrol edilebilir.
  • Tekrar edilebilir.
  • Birbirinin aynısı

Ansible Playbook yazmak, az biraz object-oriented mantığını kavrayıp, bu objelerin alt elemanlarını yönetmekle alakalı diyebilirim. Object-Oriented mantığı çok fazla geniş bir konu olduğu için olayı örnek vererek bu yapıyı flu olmaktan çıkarmak istiyorum.

Mesela Ansible’de olan Copy Module dosya işlemleri yapmanızı sağlayan bir yapıdır.

Bildiğiniz üzere Linux üzerindeki her dosya aşağıdaki özelliklere sahip olmak zorundadır. Eğer bu işlemlerin kontrolünü, her hangi bir programlama dili ile yapıyorsanız, eminim ki bu yapıyı sağlamanız için en az 100 satır kod yazmanız gerekmektedir. Yaptığınız yapıyı düzgün olarak fonksiyon olarak kurmadıysanız bu iş her işlemde uzayacak ve geliştirmesi daha da zorlaşacaktır.

  • Takip edebileceğiniz ve değişken olan dosya elementleri
    • src
    • backup_file
    • uid
    • checksum
    • md5sum
    • state
    • gid
    • mode
    • owner
    • group
    • size

Ancak Ansible kullandığınızda her işlemi basit if koşulları ile çok fazla yazmadan yaml text üzerinde yazabileceksiniz. Yaml, Markdown benzeri belirli girinti çıkıntılar ile çalışan yazım bir stilidir. Ansible playbook’ları yazarken bu formata bağlı kalmanız beklenir. Linkte verdiğim sayfanın sadeliğine dikkat etti iseniz yazacağınız metinin de o sadelikte olacağına emin olabilirsiniz.

Konuyu fazla uzatmadan küçük bir Ansible playbook yazarak anlatmaya çalışalım. Bu örnekte Ansible’nin format olaylarına pek fazla girmeyeceğim, sadece örneğin ne derece işlemimizi kolaylaştırdığı görmenizi sağlamak istiyorum.1


Aşağıdaki komut dizesi size recursive olarak 1 mb’den fazla olacak şekilde 4 haftadan daha eski olan dosyalarınızı bulmaya yarayan bir yapıdır.

  • GIRDI
  • ÇIKTI

Gördüğünüz gibi son satırda makinelere erişim yapılıp yapılmadığını, kaç işlemin düzgün olarak RECAP kısmında verilmiş. Dolayısı ile bu işlemleri izleyerek satırlarca çıktı arasından, gerekli kısım ile işlemler yapabilir, if else yapiları ile sisteminizi yönlendirebilirsiniz.

Zannımca bu kadar örnek yeterli, yazıya hangi işlemleri yaparsanız playbook kalitesi düzelir, daha kaliteli nasıl yazılır gibi, en iyi Ansible playbook’ları nerede bulunur gibi internete bulduğum okuduğum yazılar hakkında yazarak devam edeceğim.

Daha fazlası için:

  • https://github.com/leucos/ansible-tuto
    • Ansible’nin en güzel açıklandığı örnekler ile pekiştirildiği bir sayfa; Yok abi çok yüzeysel geçtin diyenlere tavsiye edilir.
  • Github
    • Ne yazık ki, her zaman orjinal işler yapmadığımızdan, zaman tasarrufu açısından playbookları yazmadan önce araştırmakta fayda var. Github ve Paste.bin’de yaptığım aramalar ile yapacağınız işin %60-70 benzerini bulmak mümkün, aramaya inanmak lazım.
  • Ansible-galaxy
    • Her açık kaynak projede olduğu gibi Ansible’nin de yaptığınız ansible playbookları atabileceğiniz bir ortamı bulunmakta burada yığınlarca yeni eski işinizi görecek otomatize edilmiş playbookları bulabilirsiniz. Hatta ansible-galaxy komutu ile rolleri direk bilgisayarınıza indirip çalıştırabilirsiniz.
  • Reddit
    • reddit/r/ansible aracılığı ile bu konu ile alakalı kişilere ulaşmak, gerçekten çok kolay ve istediğiniz soruyu&sorunu burada bulabilirsiniz.
  • http://docs.ansible.com/ansible/list_of_all_modules.html
    • Bu link Ansible’nin bütün elemanlarının bulunduğu yer diyebilirim. Her hangi bir işe başlamadan önce burada aramanız faydanıza olacaktır.

Eğer yazdığım seride düzeltmek istediğinizi kısım (Noktalama, cümle bozukluğu, kod vs bulursanız keyifle düzeltebilirim :)) Yine aynı şekilde anlayamadığınız/anlatamadığım kısım bulunursa her daim yardım etmekten ve tanışmaktan keyif duyarım.

Herkese iyi günler 🙂

 

  • Alican Uzunhan

    Selam Enis,
    Emeğine sağlık. Güzel bir makale olmuş.
    Sony’de çalıştığın için zannımca linux ile haşır neşirsin. Ancak senin de bildiğin üzere Windows hakim bir ülkede olduğumuzdan Ansible’ı Windows üzerinde manage edebilir miyiz? Ansible ile Windows sunuculara .NET uygulamalarını Continues Delivery edebilir miyiz ? Bu taraf hakkında bilgin var mıdır ? Teşekkürler.

    • Merhaba Alican,
      Teşekkür ederim sevindim beğendiğine. İşin kötü tarafı hiç ansible’yi windows makine yönetmek için kullanmadım. Desteklediklerine göre muhakkak az çok kullanılabilir diye düşünüyorum. reddit’te bir çok yazı gözüme takılıyor bu konu için oraya bakarsan bence cevabını alabilirsin.

      Kolay Gelsin 🙂