Ansible, DevOps süreçleri gibi temel teknolojilerde güçlü bir uygulanabilirliğe sahip bir süreç otomasyon sunucusudur. Ansible, aynı anda birden fazla makinede işlem yapabilen otomasyon araçlarından biridir. Ansible, uzak sunuculardaki scriptleri/playbook’ları çalıştırır/kurar ve yönetir.
Sunucuları yönetirken, yöneticinin bağlı kalamayacağı bazı komutlar veya görevler zaman alır. Örneğin, güncelleme ve yükseltme komutları, sunucuları yönetirken birincil komutlardır ve günlük olarak çalıştırılmaları gerekir. Dolayısıyla bu tür senaryolarda Ansible, yöneticilerin görevlerini otomatikleştirmek için öncelikli tercihlerinden biridir.This post illustrates the complete usage of Ansible to automate servers.
Ansible’ın Temel İş Akışı
Ansible ortamı bir Kontrol merkezi, Yönetilen sistemler, Envanter Dosyası ve Yapılandırma Dosyasından oluşur.
Kontrol merkezinde Ansible kuruludur ve Kontrol bilgisayarı, SSH aracılığıyla Yönetilen bilgisayarlarla etkileşime girer.
Ansible’ın bileşenlerini ve bunların mantıksal entegrasyonunu gösteren aşağıdaki resme bir göz atalım.
Kontrol Merkezi
Ansible’ın kurulu olduğu sistem. Ansible ile ilgili tüm konfigürasyonlar Control Side üzerinde yapıldığından, Control Node Ansible ortamının ana bileşenidir.
Yönetilen Sistemler
Ansible üzerinden bağlanmak istediğimiz sistemler/makineler. Kontrol merkezi tarafından yönetilen birden fazla Host olabilir. Ana bilgisayarlar birden fazla kategoride veya bir ana kategoride gruplandırılabilir.
Envanter Dosyası
Hosts dosyası olarak da adlandırılan envanter dosyası, konak makinelerin (Yönetilen Sistemleri) IP adreslerini ve gruplarını içerir.
Yapılandırma Dosyası
Yapılandırma dosyası, varsayılanlara bir alternatif içerir. Örneğin, envanter dosyasının varsayılan konumu “/etc/ansible/” içindedir. Varsayılan konumdan farklı bir envanter dosyası oluşturursak, yolu yapılandırma dosyasına koymamız gerekir. Benzer şekilde, varsayılan kullanıcı adı yapılandırma dosyasının içine yazılabilir.
Ansible Başucu Kitabı
Ansible Playbook, YAML biçimli bir dosyadır (YAML İşaretleme Dili Değildir). Kontrol merkezi tarafında oluşturulur ve kontrol merkezinin yönetilen sistemlerde çalıştıracağı talimatları/komutları içerir.
Otomatik Sunucu Kurulumu için Ansible Nasıl Kullanılır
Ansible’ı işlevsel hale getirmek için Ansible ön koşullarını yapılandırmamız ve başarılı bir şekilde dağıtmamız gerekiyor. İlk olarak, “Kontrol Merkezi kurulumu” ile başlayacağız:
1. Adım: Ansible’ı yükleyin | Kontrol Merkezi Tarafı
Ubuntu sistem depolarını güncelleyelim:

“Ansible”, Linux dağıtımlarının çoğunun varsayılan depolarında bulunur:

Şu komutu kullanarak kurulumu doğrulayın:

Adım 2: Envanter Dosyası Oluşturma | Kontrol Merkezi Tarafı
inventory/hosts dosyasının varsayılan konumu “/etc/ansible/hosts” şeklindedir. Ansible’ı varsayılan depolardan kurduğumuzda kullanılamayabilir, bu nedenle onu dosya sisteminin herhangi bir yerinde, tercihen varsayılan konumda oluşturmamız gerekir. Envanter dosyasını varsayılanın dışında oluşturursak, yapılandırma dosyasında envanter dosyasının yolunu sağlamamız gerekir.
Not: Envanter dosyasında IP/sunucu gruplaması
Her iki ana bilgisayarı da tek bir “[sunucu]” grubunda tutuyoruz. Bunları ayrı kategorilere ayırabiliriz. Gereksinimlere bağlıdır (Örneğin, bir IP web sunucularına atıfta bulunuyorsa, onları bir gruba koyarız. Benzer şekilde, diğer IP veritabanına atıfta bulunuyorsa, onu farklı bir kategoriye koyabiliriz.)

ansible-inventory komutunu kullanarak envanter listesini doğrulayalım:

3. Adım: SSH’yi Yapılandırın | Host Tarafı
SSH, Kontrol Merkezi ile Ana Bilgisayarlar arasındaki temel bağlantı ortamıdır. SSH, envanter/hosts dosyasındaki tüm uzak ana bilgisayarlara kurulacak ve yapılandırılacaktır:
Önce SSH’yi bir ana bilgisayara kuralım:

Ana bilgisayar tarafındaki güvenlik duvarı üzerinden 22 numaralı bağlantı noktasına izin verin:

Güvenlik duvarının durumunu kontrol edelim:

Not: Bu komutlar, SSH’nin yüklenmesi ve genel yapılandırması ile ilgilidir.
Adım 4: Yeni Bir Kullanıcı Oluşturun ve Belirli Bir Kullanıcı Adı Üzerinde Şifresiz Giriş Yapın | Host Tarafı
İlk olarak, Ansible “control node” to “hosts” işlemleri için özel bir kullanıcı oluşturalım.

Ansible kullanıcısını sudo grubuna ekleme:

Otomatik olarak bağlanırken herhangi bir kesinti olmadığından emin olmak için bu kullanıcı için parolasız oturum açmayı etkinleştirin.
Sudoers dosyasını açın, aşağıdaki ifadeyi doğru kullanıcı adı ve ass’ın sağladığı anahtar değerlerle yazın:

SSH Bağlantısını Test Etme | Ansible Kontrol Düğümünden bir Ansible Ana Bilgisayarına:

- SSH Anahtarlarını Ayarlama
Parolasız bir oturum açmamız gerektiğinden, burada SSH anahtarlarını ayarlıyoruz. İlk olarak, şu komutu kullanarak bir SSH anahtarı oluşturun:
SSH anahtarı oluşturma ve ortak anahtarı uzak ana bilgisayara kopyalama:

Not: Ortak anahtarı, çeşitli makinelerdeki ana bilgisayarları denetlemek için kullanacağınız kullanıcıya kopyalayın.
Copying the SSH key to one of the host(s):

SSH anahtarını kalan ana bilgisayarlara kopyalama:

5. Adım: Doğrulama | Ansible Bağlantısını Ana Bilgisayarlarla Test Edin
Ansible ana bilgisayarına Ansible Bağlantısını test etme (ana bilgisayarda güvenilen veya parolasız oturum açma özelliğine sahip kullanıcı adını kullanmayı unutmayın). Ansible kullanıcı listesinde güvenilir kullanıcı olarak “ansible_root” kullanıcısına sahibiz.
“Tümü”, envanter dosyasındaki tüm ana bilgisayarların taranması ve kontrol edilmesi anlamına gelir.

Yalnızca tek bir düğüme veya bir düğüm grubuna da atıfta bulunabiliriz.
- Tek Bir Yönetilen Düğüme Ping Gönderme:
Aşağıdaki komut, kontrol merkezinden “linuxhint” adlı yönetilen bir sisteme olan bağlantıyı test eder:

- Bir Grup Sunucuya Ping Atma:
Benzer şekilde, bir grup sunucu ayrı ayrı test edilebilir. Örneğin, ana bilgisayarlarımızda/envanter dosyamızda “servers” grup adımız var, bu nedenle yalnızca bu gruba ping atıyoruz:

Adım 6: Otomatik Sunucu Kurulumu için Ansible Playbook Oluşturun
Bu, Ansible kullanarak bir sunucu kurulumunu otomatikleştirmeye yönelik son adımdır. Burada, sunucu yapılandırmasını, paket kurulumunu, ağ yapılandırmasını veya başka herhangi bir görevi otomatikleştirmek için YAML (YAML Ain’t Markup Language) ile yazılmış yapılandırılmış bir komut dosyası olan bir Ansible Playbook yazıyoruz.
Adım 6.1: Ansible Projesi için Bir Dizin Oluşturun
Doğrudan bir “.yaml” veya “.yml” dosyası oluşturabiliriz. Ancak, daha yapılandırılmış ve anlaşılır bir şekilde, Ansible öğelerini ayrı tutmak için özel bir dizin oluşturalım:

Adım 6.2 Bir Başucu Kitabı Oluşturun
Ansible Playbook, otomatik bir komut dosyası oluşturmak için YAML’den ilham alan belirli bir yapıyı takip eder. Bir “YAML” yazarken dikkatli olmamız gerekir çünkü eksik bir boşluk veya fazladan boşluk Playbook’un başarısız olmasına neden olur.
İşte ilk playbook komut dosyası:
Code:
– hosts: all
tasks:
– name: Print message
debug:
msg:
Ansible GuidePlaybook açıklaması:
- hosts: all → Bu Playbook’un ilk başta tüm düğümlerde çalıştırılabileceğini gösterir.
- tasks → Bu ifade, Başucu Kitabı’ndaki görevlerin listelenmesinin başlatılmasını belirtir.
- – name: Print message → Görevin adı.
- – debug → Görevin amacı.
- Msg: Ansible Guide → Bu, hata ayıklama iletisidir.

- Ansible Playbook’u Kullanarak Paket Yükleme
Diyelim ki Ansible Playbook üzerinden bir paket kurmak istiyoruz. Bağlı ana bilgisayarlara paket yüklemek için basit bir playbook:
Code:
– name: Basic Server Setup
hosts: all
become: yes
tasks:
# Task 1: Update package list and upgrade all packages
– name: Update and upgrade system
apt:
upgrade: dist
update_cache: yes
# Task 2: Install nano (simple text editor)
– name: Install nano editor
apt:
name: nano
state: present
- Playbook’un adı, ana bilgisayarları ve ayrıcalıkları içeren başlığı başlatılır.
- Bu oyun kitabında sadece 2 görev var. Görev 1 sistemi günceller ve yükseltirken, Görev 2 Linux’ta basitleştirilmiş bir metin düzenleyici olan Nano’yu yükler.
- What is this apt in the Playbook? “apt”, apt tabanlı paketleri getirmek için kullanılan bir Ansible Modülüdür. Bu tür Ansible modülleri gereksinimlerimize göre değiştirilebilir. Örneğin, Fedora tabanlı yönetilen düğümlerle uğraşırken “dnf” modülü kullanılabilir.

Playbooku çalıştıralım:

Note: Ansible Playbook’un Çıktısı → “Tamam” ve “değiştirildi”, Ansible oyun kitabının çıktısında görülen iki kelimedir.
- “ok”: İşlem istenen konakta gerçekleştirildi ancak yönetilen düğümde hiçbir şey değişmedi. Genellikle, “nano” düzenleyici Linux dağıtımlarının çoğuna kurulur, bu nedenle yapılacak herhangi bir değişiklik yoktur.
- “changed”: Bu eylem gerçekleştirilmiş ve sistemde değişiklikler yapılmıştır. Örneğin, “güncelleme” ve “yükseltme” görevleri sistemlerde değişiklikler yaptı
Varolan playbook’a başka bir görev ekleyin:
Aynı şekilde, bu Playbook’a farklı Ansible görevleri ekleyebiliriz. Daha önce kullanılan Ansible playbook’una SSH ekleyerek yap bölümüne basit bir SSH kurulum talimatı ekleyelim:
Code:
– name: Setup SSH service
service:
name: ssh
state: started
enabled: yes
İşte değişiklikten sonraki playbook:

Playbooku tekrar çalıştıralım:

Şimdi çıktıya bakın. Linuxhint’te yalnızca SSH hizmeti ayarlanmıştır. Geri kalan tüm görevler zaten gerçekleştirilmiştir ve kullanılabilirlikleri nedeniyle (çıktıya göre) hiçbir etkisi olmamıştır.
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.