Ansible

Ansible’ın Temel Bileşenlerini Tanıyalım – Bölüm 1

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

Ansible serisinin bu 1. Bölümünde, Ansible’daki temel bileşenlere ilişkin bazı temel bilgileri tartışacağız.

Ansible’ın Temel Bileşenleri

Ansible, birden fazla sunucuyu tek bir merkezi konumdan yönetmenizi ve kontrol etmenizi sağlayan, RedHat’ın ücretsiz ve açık kaynaklı bir otomasyon platformudur. Gerçekleştirilmesi gereken birden fazla ve tekrarlayan görevleriniz olduğunda özellikle idealdir. Böylece bu uzak bilgisayarların her birine giriş yapıp görevlerinizi yapmak yerine, bunu merkezi bir konumdan rahatlıkla yapabilir ve sunucularınızı rahat bir şekilde yönetebilirsiniz.

Bu, uygulama dağıtımında tutarlılığı korumak, insan hatasını azaltmak ve tekrarlayan ve bir şekilde sıradan görevleri otomatikleştirmek istediğinizde faydalıdır.

Elbette Ansible’ın Puppet, Chef ve Salt gibi başka alternatifleri de var. Ancak Ansible daha çok kullanımı kolay ve öğrenmesi basit olduğu için tercih edilmektedir.

Sormak isteyebileceğinizi öğrenmek neden bu kadar basit? Bunun nedeni, Ansible’ın konfigürasyon ve otomasyon işlerinde insan tarafından okunabilen ve takip etmesi oldukça kolay olan YAML’yi (Yet Another Markup Language) kullanmasıdır. YAML, uzak sunucularla iletişim kurmak için uzak düğümlere bir aracı yüklemenizi gerektiren diğer otomasyon platformlarının aksine, SSH protokolünü kullanır.

Ansible’ı kullanmaya başlamadan önce, biz ilerledikçe kaybolmamanız veya kafanızın karışmaması için bazı temel terminolojilere aşina olmanız önemlidir.

Inventory

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

Bir envanter dosyası, gösterildiği gibi IP adresleriyle tanımlanan uzak sistemleri içerebilir:

10.200.50.50
10.200.50.51
10.200.50.52

Alternatif olarak, gruplara göre de listelenebilirler. Aşağıdaki örnekte, web sunucuları ve veritabanları olmak üzere 2 grup altına yerleştirilmiş sunucularımız var. Bu şekilde, IP adreslerine göre değil, grup adlarına göre başvurulabilirler. Bu, operasyon 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

Büyük bir üretim ortamındaysanız, birden çok sunucuya sahip birden çok grubunuz olabilir.

Playbook

Çalışma kitabı, görevlerin uzak ana bilgisayarlarda veya bir grup ana makinede 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 biçiminde yazılır.

Oyun kitabını oluşturmak için komutu çalıştırın.

$ touch playbook_name.yml

Örneğin, httpd adlı bir çalışma kitabı oluşturmak için komutu çalıştırın.

$ touch httpd.yml

Bir YAML dosyası, gösterildiği gibi 3 tire 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 çalışma kitabı, envanter dosyasında web sunucuları olarak tanımlanan uzak sistemlere Apache web sunucusunu kurar. 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

Modüller, uzak ana bilgisayarlarda veya sunucularda komutları yürütmek için oyun kitaplarında kullanılan ayrı kod birimleridir. Her modülü bir bağımsız değişken takip eder.

Bir modülün temel formatı anahtar: değer şeklindedir.

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

Yukarıdaki YAML kod parçacığında, -name ve yum modüllerdir.

Plays

Ansible play, bir sunucuda gerçekleştirilecek görevi tanımlayan bir komut dosyası veya talimattır. Başka bir deyişle, bir çalışma kitabı, her biri bir sunucuda gerçekleştirilecek görevi açıkça şart koşan birden çok komuttan oluşan bir koleksiyondur.

Variables

Programlama 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 ancak her zaman harflerle başlamalıdır .

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

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

  • Playbook variables
  • Inventory variables
  • Special variables

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

The syntax is as shown:

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

Aşağıdaki kodu inceleyin.

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

Yukarıdaki örnekte, buradaki değişken web_directory’dir ve ansible’a /var/www/html/ yolunda bir dizin oluşturma talimatı verir.

Facts

Facts, Ansible tarafından bir ana bilgisayar sisteminde bir oyun kitabı yürüttüğünde toplanan sistem özellikleridir. Özellikler, ana bilgisayar adını, işletim sistemi ailesini, CPU tipini ve CPU çekirdeklerini içerir.

Kullanılabilecek facts sayısına bir göz atmak için komutu verin.

$ ansible localhost -m setup
Mevcut Açıklanabilir facts ‘i Listeleyin

Gördüğünüz gibi, varsayılan olarak çok sayıda facts görüntülendi. Filtre parametresini gösterildiği gibi kullanarak sonuçları daha da daraltabilirsiniz.

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

Yapılandırma Dosyaları

Ansible’da bir yapılandırma dosyası, Ansible’ın nasıl çalıştığını belirleyen farklı parametre ayarları içeren bir dosyadır. Varsayılan yapılandırma dosyası, /etc/ansible/ dizininde bulunan ansible.cfg dosyasıdır.

Aşağıdakileri çalıştırarak yapılandırma dosyasını görüntüleyebilirsiniz:

$ cat /etc/ansible/ansible.cfg
Ansible Yapılandırma Dosyası

Gözlemleyebileceğiniz gibi, envanter ve kitaplık dosya yolları, sudo kullanıcısı, eklenti filtreleri, modüller vb. Gibi birçok parametre dahil edilmiştir. Bu parametreler, basitçe yorumlanarak ve buradaki değerler değiştirilerek ayarlanabilir.

Ek olarak, varsayılan yapılandırma dosyanız dışında Ansible ile çalışan birden çok yapılandırma dosyanız olabilir.

Yazının orijinalini buradan okuyabilirsiniz.