Ansible Kurulumu ve Kullanışlı Komutları

Sunucularımızı topluca gönderilen komutlarla yönetmemizi sağlayan ve bence dahiyane bir araç olan “ansible” için kurulum adımları şöyledir:

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

Sunuculara bağlanırken ssh-key soracaktır. Bunu /etc/ansible klasöründeki ansible.cfg dosyasından False edebilirsiniz.

vi /etc/ansible/ansible.cfg

#host_key_checking = False (remove # – # işaretini kaldırabilirsiniz.)
Sonrasında host dosyanızın içerisini gruplar halinde sunucularınızın ip leri ile doldurarak hazırlayın.

vi /etc/ansible/hosts


[webmaster]
10.100.10.10
10.100.10.11

[dbservers]
10.100.9.10
10.100.9.11

:wq
ÖRNEK KOMUTLAR:
bir servisi durdurur:

ansible client1 -m service -a ‘name=apache2 state=stopped’ –ask-pass -skK -u ovural

ovural2 adında bir kullanıcıyı hedefe ekler:

ansible clients -m user -a ‘name=ovural2 password=”$1$ihlrowCw$ytbkJMcasZOiKc2yRyDUC1″ group=sudo’ –ask-pass -skK -u ovural

sadece kullanıcının shell ini günceller:

ansible clients -m user -a ‘name=ovural shell=/bin/bash’ -skK -u ovural

ubuntu sistem upgrade:

ansible all –sudo -m apt -a ‘upgrade=dist’ -skK -u ovural

bir dosyanın içerisinde değişiklik yapar:

ansible hostadi -m shell -a “sed -i ‘s/Server=localhost/Server=zabbix.ovural.com.tr/g’ /etc/zabbix/zabbix_agentd.conf” -skK -u ovural -f 3

bir servisi yeniden başlatır:

ansible 10.100.70.40 -m service -a “name=zabbix-agent state=restarted” -skK -u ovural -f 3

bir servisi kurar:

ansible hostadi -m apt -a “pkg=zabbix-agent state=installed” -skK -u ovural -f 3

Mesela userları listeleyen bir script hazırladınız ve bunu sunucularınıza gönderip çalıştırmak istiyorsunuz. Öncelikle sunucu listenizin olan host dosyasınızı düzenleyiniz.

[root@srv1 ~]# vi /etc/ansible/hosts/servers

[webservers]
10.101.1.95
10.101.1.96
10.101.1.97
10.101.1.98
10.101.1.99

[databases]
10.101.2.95
10.101.2.96
...

Script ‘inizi oluşturunuz.

[root@srv1 ~]# vi /etc/ansible/user.sh
#! /bin/bash
### KULLANICILAR ###
# Tüm userları almak istiyorsanız asagidaki komutu kullanablirsiniz.
# users=`awk -F':' ' $3 >= 1000 && $1 != "nobody" {i++;humanuser[i]=$1 } $3 < 999 { k++;sysuser[k]=$1} END {printf"****KISISEL KULLANICILAR:\n";for (j=1;j<=i;j++) printf humanuser[j]" "; printf "\n*****SISTEM USERLARI:\n"; for(m=1;m<=k;m++) printf sysuser[m]" "}' /etc/passwd`

# Belirli userları almak istiyorsanız asagidaki yapiyi kullanablirsiniz.
users=`awk -F':' ' $3 >= 1000 && $1 != "nobody" {i++;humanuser[i]=$1 } $3 < 999 { k++;sysuser[k]=$1} END {printf "KISISEL KULLANICILAR:\n";for (j=1;j<=i;j++) printf humanuser[j]" "}' /etc/passwd`

groups=`grep '^wheel:.*$' /etc/group | cut -d: -f4 && grep '^sudo:.*$' /etc/group | cut -d: -f4`

groupssys=`grep '^adm:.*$' /etc/group | cut -d: -f4 && grep '^syslog:.*$' /etc/group | cut -d: -f4`

	echo [KISISEL_KULLANICILAR: $users]
	echo [ROOT_YETKILILER: $groups]
	echo [SYSLOG_YETKILILER: $groupssys]

Dosyayı kaydedip kapatın ve aşağıdaki komut ile user ve permission ayarlarını düzenleyerek sunuculara gönderiniz.

[root@srv1 ~]# ansible all -m copy -a "src=/etc/ansible/user.sh dest=/home/username/user.sh owner=root group=root mode=755" -i hosts/servers -skK -u username
SSH password: ********
SUDO password[defaults to SSH password]: ********

10.101.2.95 | SUCCESS => {
    "changed": false, 
    "checksum": "80b82c652ds91cca3aecd8f2ad0cefb8d6d490ce", 
    "dest": "/home/username/user.sh", 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/home/username/user.sh", 
    "size": 879, 
    "state": "file", 
    "uid": 0
}
10.101.1.9 | SUCCESS => {
    "changed": false, 
    "checksum": "80b82c65kd91cca3aecd8f0ad0c3fb8d06d290ce", 
    "dest": "/home/username/user.sh", 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/home/username/user.sh", 
    "size": 879, 
    "state": "file", 
    "uid": 0
}
...

Şimdide uzak sunuculardaki script ‘i çalıştırma zamanı:

[root@srv1 ~]# ansible all -m shell -a "/home/username/user.sh" -i hosts/servers -skK -u username

SSH password: ********
SUDO password[defaults to SSH password]: ********

10.101.2.95 | SUCCESS | rc=0 >>
[KISISEL KULLANICILAR: user1 user2 user3 user4 user5 ]
[ROOT_YETKILILER: user1,user2,user3]
[SYSLOG_YETKILILER: syslog,nxlog siem]

10.100.1.96 | SUCCESS | rc=0 >>
[KISISEL_KULLANICILAR: user1 user2 user3 user4 user5 ]
[ROOT_YETKILILER: user1,user2,user3]
[SYSLOG_YETKILILER: syslog,nxlog siem]
...

Kolay Gelsin…

Yeteneklerini kullanarak başarılı olan insanlarla bir sorunum yok, sadece başarının en üst hedef olmadığını düşünüyorum. Özgürlük, bilginin paylaşılması - genişlemesi başarının, kişiselliğin ötesinde şeyler. Kişisel başarı yanlış değil ama etkisi sınırlanmış, eğer gerektiği kadarını elde ettiyseniz hala bunun için açlık duymak ayıp, tabii doğruluk, güzellik ve adalet için durum tam tersi. / Richard Stallman