Ansible Quick Start Notlarım: Ad-Hoc Komutları

Merhabalar;

Bir önceki yazımda anible kurulumunu yapmış ve ansible controller ile workstation’lar arasındaki ssh konfig’lerini tamamlamıştım. Artık ansible ile uzak sunucular üzerinde konfigurasyon yapmanın alt yapısını oluşturmuştum. Şimdi ise ansible’da ad-hoc komutlarını anlamaya çalışacağım.

Ad-hoc komutlarını linux’da kullandığımız shell komutlarına benzetebiliriz, yani ad-hoc komutları ile hedef üzerinde komut komut istediğimiz konfigleri yapıp, bilgileri toplayabiliyoruz. Playbooks’larda ise yapmak istediğimiz birden çok işlemi bir dosya içersine yaml formatında yazıyoruz ve hedef üzerinde çalıştırıyoruz, bu manada playbooks’ları ise scriptlere benzetebiliriz.

ad-hoc komutları ile örneklere geçmeden önce inventory kavramına kısaca değineyim. Inventory demek isminden de anlaşılacağı üzere ansible’in envanter listesidir. Bu envanter listesi ile ansible konfigure edeceği sunucuları/sistemleri tanımaktadır. Ansible inventory listesini default olarak /etc/ansible/hosts dosyası içinde tutmaktadır. Şimdi envanterlerimizi buraya ekleyelim.

[root@control-node ~]# vim /etc/ansible/hosts
[root@control-node ~]# tail -n 2 /etc/ansible/hosts
workstation1
workstation2

Ad-hoc Örnekleri

Ansible komutlarımızı oluturduğumuz ansible kullanıcısı ile çalıştırmamız gerekiyor. Bunun için control node üzerinde ansible kullanıcısına geçelim.

[root@control-node ~]# sudo su - ansible
[ansible@control-node ~]$ ansible workstation1 -m ping

Yukarıdaki ad-hoc komutu ile ansible controller ile workstation1 arasındaki iletişimi ansible ping modülü ile kontrol etmiş olduk.

Aynı şekilde workstation 2 ile aramızdaki haberleşmeyi de kontrol edelim.

[ansible@control-node ~]$ ansible workstation2 -m ping

Her iki workstation ile aramızdaki haberleşmede herhangi bir problem olmadığını ping modülü ile kontrol etmiş olduk. Eğer inventor dosyamız altındaki tüm hostlar ile haberleşmemizi kontrol etmek istese idik all parametresini kullanmamız gerekecekti , şu şekilde ;

[ansible@control-node ~]$ ansible all -m ping

Uzak sistem üzerindeki bilgileri setup modülü ile çekebiliriz. Setup modülü bize hedef hakkında hostname, ip adresi, sistem zamanı, işlemci mimarisi, dns adresleri, disk partitionları ve daha bir çok bilgileri bize sunmaktadır.

[ansible@control-node ~]$ ansible workstation1 -m setup

Setup bilgileri yukarıdaki ekran görüntüsü kadar değil, ekran görüntüsü çok uzun olduğundan sadece bukadarını aldım. Eğer biz sadece hedef sistem hakkında örneğin ipv4 adresini öğrenmek istediğimiz durumda “ansible facts” özelliklerinden, filter özelliğini kullanmamız gereklemtedir.

[ansible@control-node ~]$ ansible workstation1 -m setup -a filter=*ipv4*

Örneğin eğer sadece hedef hostname’ini öğrenmek istersem, benzer şekilde filter özelliğinde faydalanacağım,

[ansible@control-node ~]$ ansible workstation1 -m setup -a filter=*hostname*

Şimdi inventory dosyamız içersinde bulunan sunuculara, apache servisini ansible ad-hoc ile kuralım. Bunun için yapmamız gereken aşağıdaki ansible ad-hoc komutunu çalıştırmaktır. Burada ;

-b ifadesi : ansible ın hedef üzerinde sudo yetkileri ile kurulum yapacağını göstermektedir.

-m ifadesinde ansible hedef üzerinde yum modülünü kullanacak ve ismi httpd olan servisin son sürümümü kuracağı, anlamlarına gelmektedir.

[ansible@control-node ~]$ ansible all -b -m yum -a "name=httpd state=latest"

Workstation1 ve workstation2 sunucuları üzerine başarılı bir şekilde apache kurulumunu yaptık, ancak servisi enable etmedik. Aşağıdaki ad-hoc komutu sayesinde de httpd servisini enable etmiş olacağız.

[ansible@control-node ~]$ ansible all -b -m service -a "name=httpd state=started"

Şimdi de asnible lineinfile modülü kullanarak index.html dosyası içerise “This server is managed by Ansible” ifadesini ekleyelim.

[ansible@control-node ~]$ ansible all -b -m lineinfile -a 'dest=/var/www/html/index.html line="This server is managed by Ansible"'

Başarı bir şekilde index.html dosyamızın içeriğini değiştirdik. curl ile yaptığımız değişiklikleri kontrol edelim.

[ansible@control-node ~]$ curl http://10.250.2.230:80/index.html
[ansible@control-node ~]$ curl http://10.250.2.231:80/index.html

Ad-hoc komutları ile hedef sunucular üzerine apache servisi kurup, bu servisi başlatıp ve index.html dosyası içersine bir ifade ekleyerek uzaktasi sistemleri ansible ile nasıl yöneteciğimizi az da olsa anlamış olduk. Ansible tüm bu kurulumları tek tek değilde bir yaml dosyası içersinden okuyup bir çırpıda bunları gerçekleştirebilir ki o noktada yazının girişinde de bahsettiğim gibi playbooks’lar devreye girecek. Bir sonraki yazımda playbooks’ları anlamaya çalışacağım.

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*