Ansible Nedir ? Ubuntu üzerine Ansible Kurulumu ve Host Ekleme

Ansible Nedir ? Ubuntu üzerine Ansible Kurulumu ve Host Ekleme

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.

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

apt-get install software-properties-common
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible

Böylece ansible kurulumum tamamlanmış oldu , doğrulamak için aşağıdaki komutu kullanabilir ayrıca versiyonunu görebilirsiniz.

ansible –version

root@ansible:/home/ayhanarda# ansible –version
ansible 2.8.3
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.16 (default, Apr 6 2019, 01:42:57) [GCC 8.3.0]

Ş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’i hostlara gönderip şifresiz bir şekilde oturum açabilelim.

ssh-keygen -t rsa

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’iniz gönderilmiş olacak.

ssh-copy-id root@10.148.208.100

Sonra key’in çalışıp çalışmadığının denemek için aşağıdaki şekilde host’a bağlanmayı deneyebilirsiniz.

ssh root@10.148.208.100

Şifresiz olarak Sizi içeri aldı ise key’iniz tamam demektir.

Bu işlemi tüm bağlanacağınız hostlara yapmalısınız.

Şimdi gelelim bu hostları ansible’ı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.

nano /etc/ansible/hosts

## Ayhan ARDA
[servers]
host1 ansible_ssh_host=10.148.208.100
host2 ansible_ssh_host=10.148.208.101
host3 ansible_ssh_host=10.148.208.102

#[web_servers] örnek!!
#host20 ansible_ssh_host=10.148.208.120
#host21 ansible_ssh_host=10.148.208.121
#host22 ansible_ssh_host=10.148.208.122

Şİmdi geleneksel bir ansible testi yapalım , ping gönderip pong cevabı almaya çalışacağız.

root@ansible:/home/ayhanarda# ansible all -m ping

host1 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}

host2 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}

host3 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}

Her şey yolunda gözüküyor , şimdi tek host a bir shell komutu gönderelim, bakalım cevap alabilecek miyiz? Ben host1’e gödneriyorum , all diyerek tümüne gönderebilirsiniz.

root@ansible:/home/ayhanarda# ansible -m shell -a “uptime && ifconfig” host1

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

Birde işleri daha kolay hale getirmek için Ansible Tower var , bunu farklı bir yazıda ele alacağım.

Ayhan ARDA

scp: .ssh/authorized_keys: No such file or directory hatası ve çözümü

bash: /home/user/.ssh/authorized_keys: No such file or directory hatası ve çözümü
scp: .ssh/authorized_keys: No such file or directory

Muhtemelen bu hatayı şifresiz erişmek istediğiniz sunucuya scp ile key gönderirken alıyorsunuz ya da key i bir şekilde o sunucuya aktardınız ve authorized_keys dosyasına yazmak istediğinizde karşılaştınız.

Şifresiz erişmek istediğiniz sunucuya ssh ile erişin ve aşağıdaki komutları sıra ile çalıştırın , böylece gerekli izin hakları verilmiş şekilde authorized_keys dosyanız oluşturulacaktır.

root@ayhanarda:~# mkdir ~/.ssh
root@ayhanarda:~# chmod 700 ~/.ssh
root@ayhanarda:~# touch ~/.ssh/authorized_keys
root@ayhanarda:~# chmod 600 ~/.ssh/authorized_keys

Ayhan ARDA