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 nedir?

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

Ansible playbook hakkında detaylı dökümantasyonu bu bağlantıda bulabilirsiniz.