Bugün sizler ile PluralSight platformundan almış olduğun Getting Started with Ansible notlarımı paylaşacağım.
Ansible, manuel olarak yaptığınız işleri otomatize etmenizi sağlayan bir otomasyon tool’udur. Birçok modülü sayesinde network cihazlarınızdan bulut ortamlarına kadar kullandığınız sunuculara geniş kapsamlı otomasyon hizmeti sunmanızı sağlar.

Ansible’ın temel yapısını incelemek istersek;
Control Node: Ansible’ın kurulu olduğu makinedir. Bu makine üzerinden ansible komutlarını, playbook’larını çalıştırabiliriz.
Managed Nodes: Ansible tarafından yönetilen makinelerdir. Örneğin bir playbook’un uygulanmasını istediğimiz hostumuz bu yapıdaki managed node olacaktır.

Ayrıca Ansible ile çalışmaya başladığımızda sıklıkla duymaya başlayacağımız terimlerden de bahsetmek istiyorum.
Modules: Ansible’ın farklı görevler için oluşturulmuş kod kümeleridir. Ansible’ın zengin bir modül kütüphanesi bulunmaktadır.
Inventory: Ansible komutlarının uygulandığı hostların tamamını kapsayan envanter diyebiliriz.
Playbooks: Otomasyon ile yapılacak görevlerin toplandığı dosyadır. YAML formatındadır. Mesela envaterdeki tüm sunuculara remote bağlantı sağlayıp backup scriptini başlat şekilinde bir playbook’umuz olabilir. Ad-hoc komutlarını YAML formatına dönüştürerek kolaylıkla playbook oluşturabiliriz.

Temel kavramlar üzerine durduktan sonra biraz pratik yaparak öğrendiklerimizi pekiştirelim istiyorum. Öncelikle test ortamımıza Ansible kurulumu yapmamız gerekiyor. Birçok farklı şekilde Ansible kurulumu yapabilirsiniz. Detaylı dökümanın linkini de bırakıyorum.
Benim gerçekleştireceğim örnek ile aşağıdaki adımları yapıyor olacağız.
1. İlk olarak test sunucumuzda podman kurulumu yapıp ardından üzerinde Ansible AWX container’ı ayağa kaldıracağız
2. Daha sonrasında ise Ad-hoc komutları ile Ansible modüllerini kullanacağız.
3. Komutlar ile yaptığımız çalışmayı playbook dosyası haline getireceğiz ve playbook dosyasını çalıştıracağız.
Öyleyse başlayalım.
1. Podman + Ansible AWX Kurulumu
Bu aşamada Zeynep Rümeysa Yorulmaz tarafından kaleme alınmış “Podman Nedir?” yazısından yararlandım. Açıklayıcı paylaşımından dolayı kendisini tebrik ederim. Merak edenler için yazının linkini buraya bırakıyorum. 🙂
Ubuntu 22.04 OS versionuna sahip test sunucumuza podman paketlerini yükleyelim.
sudo apt install podman
Eğer ki sisteminizde Kubic proje deposu ekli değilse öncesinde onu da eklemeniz gerekiyor. Detayları Podman Nedir? yazısında belirtilmiş.
Kurulumdan sonra podman hakkında detayları ve mevcut podman versiyon bilgisini aşağıdaki komutlar ile görebilirsiniz.
podman info
podman -version
Red Hat’in bir ürünü olan Quay.io image registry tool’unu kullanarak Ansible AWX image ını localimize çekeceğiz.
podman login quay.io % Quay.io hesabına login olunur.
podman pull quay.io/ansible/awx-ee % İmajı kendi localimize alalım.
podman images % İndirilen imajları listeleyelim.
podman run -dt quay.io/ansible/awx-ee % Ansible AWX imajımızı çalıştıralım.
podman ps -a % Çalışan imajlarımızı listeleyerek Ansible AWX imajının ContainerID'sini öğrenelim.
podman exec -it <ContainerID> /bin/bash % Ansible AWX Container ID'si yazılarak container'a bağlanalım.
Artık Ansible AWX container’ına bağlandık ve diğer adımları gerçekleştirebiliriz.
2.Ad-Hoc Komutları ile Ansible Modül Kullanımı
Ad-hoc komutları absible’ı komut satırı olarak çalıştırmamızı sağlarlar. Tek seferde tek bir görevi yerine getirir.
Ad-hoc komutlarının yapısı şu şekildedir:

Gelin dosya kopyalama işlemi için Ad-hoc komutunu kullanalım.
ansible -m copy -a "src=/runner/example.txt dest=/runner/examplecopy.txt" localhost
Komutun çıktısı aşağıdaki gibi olacaktır. Farkettiyseniz changed : true olarak belirtilmiş. Aynı komutu tekrar çalıştırırsanız komut çalışacak ancak changed: false olarak gelecektir. Yani dosyada değişiklik olmadan kopyalamış olacaktır.


3. Playbook Oluşturma
Şimdi de ad-hoc ile yaptığımız kopyalama işlemini playbook oluşturarak yapalım.
bash-4.4$ vi playbook.yml
---
- name: copy a file
hosts: localhost
tasks:
- copy:
src: /runner/example.txt
dest: /runner/examplecopy.txt
Oluşturduğumuz YAML formatındaki dosyamınızı ansible-playbook komutu ile çalıştıracağız.
ansible-playbook playbook.yml

Bu basit örnek ile temel kavramları öğrendiğimizi düşünüyorum. Eğitimden yakaladığım diğer notları bir başka yazıda devam edeceğim.
Şimdilik hoşçakalın 🙂
