<h4 class="wp-block-heading">Ansible Nedir ? Ubuntu üzerine Ansible Kurulumu ve Host Ekleme</h4>



<p class="wp-block-paragraph">Ansible, sistem yöneticisinin işlerini basitleştirmek için geliştirilmiş, agent a ihtiyaç duymayan (agent bazen iyidir) otomasyon aracıdır. Kısaca işlem yapacağınız hostları bir dosya da kategorilere ayırıp tümüne ya da kategoriye uyan tümüne ya da dilediğiniz tek sunucuya komut göndermeniz yarar , sadece komut göndermekle kalmaz ayrıca playbook adını verdiği dosyalar ile sunucular üzerinden bir çok işlemi bir reçete haline getirip otomasyona sokabilirsiniz , örneğin 1000 sunucuya aynı anda nginx kurup virtual host ayarlarını değiştirip yayına al gibi işlemlerin çok daha fazlası mümkündür.</p>



<p class="wp-block-paragraph">Ansible kurulumuna geçelim, ben test için bir ubuntu kurdum , versiyon 19. Sonra aşağıdaki komutları sırası ile çalıştırıyorum</p>



<p class="wp-block-paragraph"><em>apt-get install software-properties-common<br>apt-add-repository ppa:ansible/ansible<br>apt-get update<br>apt-get install ansible</em></p>



<p class="wp-block-paragraph">Böylece ansible kurulumum tamamlanmış oldu , doğrulamak için aşağıdaki komutu kullanabilir ayrıca versiyonunu görebilirsiniz.</p>



<p class="wp-block-paragraph">ansible &#8211;version</p>



<p class="wp-block-paragraph">root@ansible:/home/ayhanarda# ansible &#8211;version<br> ansible 2.8.3<br> config file = /etc/ansible/ansible.cfg<br> configured module search path = [u&#8217;/root/.ansible/plugins/modules&#8217;, u&#8217;/usr/share/ansible/plugins/modules&#8217;]<br> ansible python module location = /usr/lib/python2.7/dist-packages/ansible<br> executable location = /usr/bin/ansible<br> python version = 2.7.16 (default, Apr 6 2019, 01:42:57) [GCC 8.3.0]</p>



<p class="wp-block-paragraph">Şimdi sıra host eklemeye geldi , ansible hostlara ssh key ile bağlanmakta , önce sunucumuzda bir key oluşturalım ki daha sonra bu key&#8217;i hostlara gönderip şifresiz bir şekilde oturum açabilelim.</p>



<p class="wp-block-paragraph"><em>ssh-keygen -t rsa</em></p>



<p class="wp-block-paragraph">Yukarıdaki komutu next next diyerek geçebilirsiniz , sonrasında keyimiz default adı ile oluşmuş olacak , bunu hostumuza göndermek için aşağıdaki komutu kullanabilirsiniz. Benim örnek hostumun ip adresi 10.148.208.100 , Siz kendi bağlanacağınız ip adresini yazmalısınız. Aşağıdaki komutu yazdıktan sonra Size bir seferlik hostun şifresini soracak , yazıp geçebilirsiniz ve artık key&#8217;iniz gönderilmiş olacak.</p>



<p class="wp-block-paragraph"><em>ssh-copy-id root@10.148.208.100</em></p>



<p class="wp-block-paragraph">Sonra key&#8217;in çalışıp çalışmadığının denemek için aşağıdaki şekilde host&#8217;a bağlanmayı deneyebilirsiniz.</p>



<p class="wp-block-paragraph"><em>ssh root@10.148.208.100</em></p>



<p class="wp-block-paragraph">Şifresiz olarak Sizi içeri aldı ise key&#8217;iniz tamam demektir.</p>



<p class="wp-block-paragraph">Bu işlemi tüm bağlanacağınız hostlara yapmalısınız.</p>



<p class="wp-block-paragraph">Şimdi gelelim bu hostları ansible&#8217;ın config dosyasına ekleme işlemine. Sevdiğiniz bir editör ile /etc/ansible/hosts dosyasını açalım ve içini aşağıdaki şekilde dolduralım.</p>



<p class="wp-block-paragraph"><em>nano /etc/ansible/hosts</em></p>


<p>## Ayhan ARDA<br />
[servers]<br />
host1 ansible_ssh_host=10.148.208.100<br />
host2 ansible_ssh_host=10.148.208.101<br />
host3 ansible_ssh_host=10.148.208.102</p>
<p>#[web_servers] örnek!!<br />
#host20 ansible_ssh_host=10.148.208.120<br />
#host21 ansible_ssh_host=10.148.208.121<br />
#host22 ansible_ssh_host=10.148.208.122</p>



<p class="wp-block-paragraph">Şİmdi geleneksel bir ansible testi yapalım , ping gönderip pong cevabı almaya çalışacağız.</p>



<p class="wp-block-paragraph">root@ansible:/home/ayhanarda# ansible all -m ping</p>



<p class="wp-block-paragraph">host1 | SUCCESS =>; {<br> &#8220;ansible_facts&#8221;: {<br> &#8220;discovered_interpreter_python&#8221;: &#8220;/usr/bin/python&#8221;<br> }, <br> &#8220;changed&#8221;: false, <br> &#8220;ping&#8221;: &#8220;pong&#8221;<br> }</p>



<p class="wp-block-paragraph">host2 | SUCCESS =>; {<br> &#8220;ansible_facts&#8221;: {<br> &#8220;discovered_interpreter_python&#8221;: &#8220;/usr/bin/python&#8221;<br> }, <br> &#8220;changed&#8221;: false, <br> &#8220;ping&#8221;: &#8220;pong&#8221;<br> }</p>



<p class="wp-block-paragraph">host3 | SUCCESS =>; {<br> &#8220;ansible_facts&#8221;: {<br> &#8220;discovered_interpreter_python&#8221;: &#8220;/usr/bin/python&#8221;<br> }, <br> &#8220;changed&#8221;: false, <br> &#8220;ping&#8221;: &#8220;pong&#8221;<br> }</p>



<p class="wp-block-paragraph">Her şey yolunda gözüküyor , şimdi tek host a bir shell komutu gönderelim, bakalım cevap alabilecek miyiz? Ben host1&#8217;e gödneriyorum , all diyerek tümüne gönderebilirsiniz.</p>



<p class="wp-block-paragraph">root@ansible:/home/ayhanarda# ansible -m shell -a &#8220;uptime &;&; ifconfig&#8221; host1</p>



<p class="wp-block-paragraph">host1 | CHANGED | rc=0 >;>;<br>
 11:06:17 up 1 day, 1:29, 4 users, load average: 8.28, 7.81, 7.73<br>
enp4s0: flags=4163 mtu 1500<br>
 inet 10.148.208.100 netmask 255.255.255.0 broadcast 10.148.208.255<br>
 inet6 fe80::1e1b:dff:fe86:db8b prefixlen 64 scopeid 0x20<br>
 ether 1c:1b:0d:86:db:8b txqueuelen 1000 (Ethernet)<br>
 RX packets 6440934 bytes 423498590 (403.8 MiB)<br>
 RX errors 1221 dropped 0 overruns 6 frame 1221<br>
 TX packets 247728 bytes 327505028 (312.3 MiB)<br>
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0<br>
 device memory 0xdf200000-df27ffff </p>



<p class="wp-block-paragraph">Birde işleri daha kolay hale getirmek için Ansible Tower var , bunu farklı bir yazıda ele alacağım. </p>



<p class="wp-block-paragraph">Ayhan ARDA</p>


Ansible Nedir ? Ubuntu üzerine Ansible Kurulumu ve Host Ekleme
