İçerik
Ansible Nedir?
Ansible, açık kaynak kodlu ücretsiz otomasyon aracıdır. BT süreçlerinin otomasyon işleri için kullanılmaktadır. Önemli özelliklerinden birisi de diğer sunucularınıza agent kurmak zorunda değilsiniz. Tek bir çatı altında eklediğiniz hostlara istediğiniz komutları göndermenizi sağlar.
Ansible Kurulumu
Sistem güncellemesi
Öncelikle sistemde update ve upgrade yapalım.
sudo apt update -y && sudo apt upgrade -y
Ansible paketinin kurulumu
sudo apt install ansible sshpass -y
Sunucu konfigürasyonları
Ansible kurulumundan sonra default olarak “/etc/ansible/hosts” dosyası oluşur. Bu dosya içerisindeki sunucuları kendinize göre düzenlemeniz gerekir.
nano /etc/ansible/hosts
Dosyanızın son hali aşağıdaki gibi olmalı.
[servers]
server1 ansible_host=xxx.xx.xx.xx
server2 ansible_host=xxx.xx.xx.xx
server3 ansible_host=xxx.xx.xx.xx
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Eklediğimiz sunucuları kontrol edelim.
ansible-inventory --list -y
Output
all:
children:
servers:
hosts:
server1:
ansible_host: xxx.xx.xx.xx
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: xxx.xx.xx.xx
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: xxx.xx.xx.xx
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
Aşağıdaki dosyayı açıp ilgili ayarı ekleyelim.
/etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
Bağlantı testi
Aşağıdaki komutu girdikten sonra eklediğiniz sunuculara ping isteği gönderir. Karşılığında “pong” yanıtı almalısınız. Komutu girdikten sonra sizden sunucu şifrelerini soracaktır.
ansible all -m ping -u root --ask-pass
Şuna benzer bir çıktı almalısınız.
Output
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Playbook ile sunucuları güncelleme
Aşağıdaki komutları Ansible’ı çalıştıracağınız sunucuya “update-all-servers.yml” olarak kaydedin.
---
- hosts: servers
become: true
become_user: root
tasks:
- name: Update apt repo and cache on all Debian/Ubuntu boxes
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600
- name: Upgrade all packages on servers
apt: upgrade=dist force_apt_get=yes
- name: Check if a reboot is needed on all servers
register: reboot_required_file
stat: path=/var/run/reboot-required get_md5=no
- name: Reboot the box if kernel updated
reboot:
msg: "Reboot initiated by Ansible for kernel updates"
connect_timeout: 5
reboot_timeout: 300
pre_reboot_delay: 0
post_reboot_delay: 30
test_command: uptime
when: reboot_required_file.stat.exists
Ardından dosyayı Anisble yardımı ile çalıştırın.
ansible-playbook -i /etc/ansible/hosts -u root update-all-servers.yml --ask-pass
Çıktı aşağıdaki gibi olacaktır.
Ansible playbook hakkında detaylı dökümantasyonu bu bağlantıda bulabilirsiniz.