Ansible nedir? Nasıl kullanılır? (Mini eğitim seti)

Posted by

Ansible Otomasyon sınavı (EX407), Red Hat tarafından sistemlerin ve uygulamaların yapılandırmasını otomatikleştirmek için Ansible’ı kullanma becerilerinizi test eden bir sertifika programıdır.

Buradan sertifikaya bakabilirsiniz: https://www.redhat.com/en/services/training/ex407-red-hat-certified-specialist-in-ansible-automation-exam

Bende bu sertifakanın izlediği ana hatları takip ederek mini bir eğitim seti hazırladım, parça parça
yayınlayacağım.

Bölüm 1 – Ansible’ın ana hatlarını anlamak.
Bölüm 2 – Ansible Control Node’larını yüklemek ve konfigüre etmek.
Bölüm 3 – Ansible Node’ları ad-hoc komutları ile nasıl yönetilir?
Bölüm 4 – Hostu tanımlamak için nasıl statik ve dinamik envanterler oluşturulu?
Bölüm 5 – Ansible Play’s ve Playbook nasıl oluşuturulur?
Bölüm 6 – Ansible Modüllerini Sistem uzmanları için nasıl modifiye edebiliriz?
Bölüm 7 – Özel Yapılandırma Dosyaları Oluşturmak için Şablonlar Oluşturma ve Kullanma.
Bölüm 8 – Ansible’da Variables ve Facts.
Bölüm 9 – Ansbile’da roller nasıl tanımlanır ve Ansible Galaxy kullanımı.
Bölüm 10 – Ansible güvenliği.

Bu bölümümüzde basit bir genel bakış yapacağız.

Bölüm 1 – Ansible’ın ana hatlarını anlamak.

Ansible Red Hat tarafından sunulan açık kaynak kodlu bir otomasyon platformu. Bu platform ile bir çok redhat
makinanızı kolaylıkla otomatik bir şekilde yönetebilirsiniz. Özellikle gerçekleştirilmesi gereken birden fazla ve tekrarlayan göreviniz varsa. Her makinanızda tek tek oturum açıp görevlerinizi yerine getirmek yerine, ansible ile merkezi bir konumdan rahatlıkla bu görevlerinizi gerçekleştirebilirsiniz. Böylece sunucularınızı rahat rahat yönetebilirsiniz.

Tabikide Ansible kullanmak istemezseniz Puppet, Chef ya da Salt gibi alternatifler mevcut. Ama içlerinde
kullanması en kolayı bence Ansible.

Neden mi? Çünkü Ansible’ı kullanmak için YAML dosyalarını konfigüre ediyorsunuz. YAML ise okunması ve konfigüre edilmesi çok kolay bir dosya sistemi. Ayrıca en büyük artısı SSH ile diğer sunuculara bağlanması, diğer otomasyon sistemlerinde bir aracı yüklemeniz gerekiyor.

Başlamadan önce biraz terminolojiden bahsedelim ki anlaşılması kolaylaşssın.

Inventory – Envanter

Envanter, yönettiğiniz ve yapılandırdığınız sunucuların listesini içeren bir metin dosyasıdır.
Genellikle sunucular ana bilgisayar adlarına veya IP adreslerine göre listelenir.

10.200.50.50
10.200.50.51
10.200.50.52

Alternatif olarak, gruplara göre sıralanabilirler. Aşağıdaki örnekte, web sunucuları ve veritabanları olmak
üzere 2 gruba yerleştirilmiş sunucularımız bulunmaktadır. Bu yolla IP adreslerine değil grup adlarına göre
otomasyonlarımız konfigüre edebiliriz. Bu işlem süreçlerini daha da basitleştirir.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

Geniş bir üretim ortamındaysanız, birden çok sunucuyla birden fazla grubunuz olabilir.

Playbook

Playbook, uzak ana makinelerde veya bir grup ana makinede görevlerin nasıl yürütüleceğini tanımlayan
bir dizi yapılandırma yönetimi komut dosyasıdır. Komut dosyaları veya talimatlar YAML formatında yazılmıştır.

Örneğin, Apache web sunucusunu CentOS 8’ye kurmak ve httpd.yml olarak adlandırmak için bir playbook dosyanız olabilir.

Playbook oluşturmak için komutumuz:

$ touch playbook_name.yml

Örneğin, httpd adlı bir playbook oluşturmak için komutumuz:

$ touch httpd.yml

Bir YAML dosyası gösterildiği gibi 3 kısa çizgi ile başlar. Dosyanın içine aşağıdaki talimatları ekleyin.



– name: This installs and starts Apache webserver
hosts: webservers

tasks:
– name: Install Apache Webserver
yum: name=httpd state=latest

– name: check httpd status
service: name=httpd state=started

Yukarıdaki playbook, Apache web sunucusunu envanter dosyasında web sunucuları olarak tanımlanan uzak
sistemlere yükler. Web sunucusunun kurulumundan sonra Ansible daha sonra Apache web sunucusunun başlatılıp başlatılmadığını ve çalışıp çalışmadığını kontrol eder.

Modules – Moduller

Modüller, uzak bilgisayarlarda veya sunucularda komutları yürütmek için playbook tarafından kullanılan ayrı kod birimleridir. Her modülü bir argüman izler.

Basit formatı key:value şeklindedir.

- name: Install apache packages 
    yum:   name=httpd  state=present

Variables – Değişkenler

Programlamada bir geçmişiniz varsa, büyük olasılıkla değişkenleri kullanmışsınızdır. Temel olarak,
bir değişken bir değeri temsil eder. Bir değişken harfleri, sayıları ve alt çizgileri içerebilir.

Değişkenler, talimatlar bir sistemden diğerine değiştiğinde kullanılır. Bu özellikle yapılandırma veya
çeşitli servisler ve özellikler için geçerlidir.

3 ana değişken türü vardır:

  • Playbook değişkenleri
  • Envanter değişkenleri
  • Özel değişkenler

Ansible’da değişkenler önce vars: olarak, ardından değişken adı ve değeri kullanılarak tanımlanır.

Aşağıda gösterildiği gibidir:

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

Ya da:
- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

Facts

Facts, ansible bir playbooku her hangi bir sistemde kullandığı zaman topladığı sistem bilgileridir, bunların
içinde işletim sisteminin adı, işlemci tipi vb. gibi şeyler olur.

Aşağıdaki komutla buna bir bakış atalım:

$ ansible localhost -m setup | less 

Gördüğünüz gibi epey bir bilgi görülüyor. Ama aradığınız özel bir parametre varsa filtreleme yapabiliriz.

$ ansible localhost -m setup -a "filter=*ipv4"

Konfigürasyon Dosyaları

Ansible’ın yapılandırma dosyasına /etc/ansbile dizininden bakabilirsiniz.

$ cat /etc/ansible/ansible.cfg

Leave a Reply