Ansible, otomasyon, yapılandırma yönetimi ve uygulama dağıtımı için kullanılan açık kaynaklı bir yazılımdır. Genellikle sunucu yapılandırma yönetimi, yazılım dağıtımı ve iş süreçlerinin otomatikleştirilmesi gibi alanlarda kullanılır. Ansible, basit, etkili ve agentless (Kontrol edilecek sunuculara bir kurulum yapmaya gerek olmaz) bir yapısıyla bilinir. Bu da kurulumu ve yapılandırması kolaylaştırır, çünkü ek bir yazılım veya agent yüklemeye gerek kalmadan uzaktaki makineleri yönetebilir.

Ansible’ın Kullanım Alanları

  1. Sunucu Yapılandırma Yönetimi: Ansible, sunucuların yapılandırılmasını kolaylaştırır. Örneğin, farklı sunucular arasında ortak yapılandırmaları hızlıca dağıtabilirsiniz.
  2. Uygulama Dağıtımı: Yazılım veya uygulamaların farklı ortamlara dağıtılması Ansible ile otomatikleştirilebilir. Bu, geliştirme süreçlerini hızlandırır.
  3. Otomasyon: Tekrarlayan görevlerin otomatikleştirilmesi, bakım işlemlerinin yönetimi gibi pek çok alanda Ansible kullanılabilir.

Ansible Nasıl Kullanılır?

Ansible, YAML dilinde yazılmış basit ve anlaşılabilir bir yapıya sahiptir. İşte Ansible‘ı kullanmaya başlamanız için temel adımlar:

  1. Kurulum: Ansible’ı kullanmak için bilgisayarınıza kurmanız gerekir. Genellikle Python temelli bir araç olduğu için, Python’un yüklü olması gerekmektedir.
  2. Inventory (Envanter) Tanımlama: Ansible’ın yöneteceği makinelerin listesini içeren bir dosyadır. Bu dosya, Ansible’ın hangi makinelerle etkileşimde bulunacağını belirtir.
  3. Hosts: “/etc/ansible/hosts” adresinde bulunur. Buraya kontrol etmeyi düşündüğünüz sunucularda ansible yüklü olmasına bile gerek yok tek yapmanız gereken ip adresleri ve kullanıcı ID ve parola bilgisi;

...
[server]
192.168.1.201
[server:vars]
ansible_user=kullanıcı-adı
ansible_password=parola

Bunu ssh kullanarak da yapabiliriz. Bunun için ilk önce bir ssh key oluşturmalı ve bu ssh keyleri kontrol edeceğimiz sunuculara "ssh-copy-id" komutu ile göndermeliyiz.


shh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub kullanıcı@sunucu

# Ondan sonra /etc/ansible/hosts dosyasına bu sunucuları bu şekilde eklememiz gerekir.
[server]
192.168.1.200 ansible_user=kullanıcı-adı ansible_ssh_private_key=~/.ssh/id_rsa
192.168.1.201 ansible_user=kullanıcı-adı ansible_ssh_private_key=~/.ssh/id_rsa

  1. Playbook'lar Oluşturma: Playbook'lar, Ansible'ın görevlerini (tasks) tanımladığınız dosyalardır. Playbook'lar, YAML formatında yazılır ve hangi işlemlerin hangi makinelerde yapılacağını belirtir.
  2. Modüller ve Görevlerin Tanımlanması: Ansible'ın sağladığı modüller aracılığıyla sistemler üzerindeki görevlerinizi tanımlarsınız. Örneğin, bir paket yüklemek, servisi yeniden başlatmak gibi işlemler modüllerle gerçekleştirilir.
  3. Ansible'ı Çalıştırma: Oluşturduğunuz playbook'ları, ansible-playbook komutu ile çalıştırarak belirlediğiniz görevlerin makinelere uygulanmasını sağlayabilirsiniz.
  4. Test : Bağladığımız sunucuları test etmek için basit bir yöntem olarak, ansible all -m ping kullanabiliriz.

Örnek olarak;


---
- name: Update ve upgrade işlemi
  hosts: server  # Sunucuların bulunduğu grup adını buraya yazın
  become: yes  # Root erişimi için

  tasks:
    - name: Debian tabanlı sistemlerde update ve upgrade yap
      when: ansible_facts['os_family'] == 'Debian'
      apt:
        update_cache: yes
        upgrade: full
        autoremove: yes
        autoclean: yes

    - name: RedHat tabanlı sistemlerde update ve upgrade yap
      when: ansible_facts['os_family'] == 'RedHat'
      yum:
        name: '*'
        state: latest
        update_cache: yes

Otomasyon ve yapılandırma yönetimi için kullanılan bazı popüler araçlar şunlardır:

  1. Chef: Yazılım ve sistem yapılandırma yönetimi için kullanılan bir araçtır. Ruby tabanlıdır ve yapılandırma "reçeteleri" (recipes) ile sistemleri yönetir.
  2. Puppet: Büyük ölçekli sistemlerin yapılandırma yönetimi için kullanılır. Bildirimsel bir dili vardır ve sunucuların durumunu belirli bir yapıya getirmek için kullanılır.
  3. SaltStack: Olay tabanlı otomasyon, yapılandırma yönetimi ve veri merkezi yönetimi için kullanılan bir araçtır. Hızlı ve ölçeklenebilir bir şekilde çalışabilir.
  4. Terraform: Altyapı yönetimi için kullanılan bir araçtır. Infrastructure as Code (IaC) prensiplerine dayanır ve bulut sağlayıcıları arasında (AWS, Azure, Google Cloud, vb.) altyapıyı yönetir.

Kategori: