Takip et

Ansible’ı Ubuntu 18.04 Üzerine Kurma ve Yapılandırma [Hızlı Başlangıç Kılavuzu]

Ansible’ı Ubuntu 18.04 Üzerine Kurma ve Yapılandırma [Hızlı Başlangıç Kılavuzu] Ansible, günümüzün hızla değişen IT ortamında siste

Ansible’ı Ubuntu 18.04 Üzerine Kurma ve Yapılandırma [Hızlı Başlangıç Kılavuzu]

Ansible, günümüzün hızla değişen IT ortamında sistem yöneticileri, DevOps mühendisleri ve yazılım geliştiriciler için vazgeçilmez bir otomasyon aracı haline gelmiştir. Sunucu yapılandırması, uygulama dağıtımı, orkestrasyon ve diğer birçok IT görevini otomatikleştirmek için tasarlanmış, kullanımı kolay ve güçlü bir platformdur. Bu kapsamlı kılavuzda, Ansible’ı Ubuntu 18.04 işletim sistemi üzerine nasıl kuracağınızı ve temel düzeyde nasıl yapılandıracağınızı adım adım öğreneceksiniz. Amacımız, hızlı bir başlangıç yaparak Ansible’ın temel yeteneklerini kullanmaya başlamanızı sağlamaktır.

Ansible Nedir ve Neden Kullanmalısınız?

Ansible, Red Hat tarafından geliştirilen, açık kaynaklı bir otomasyon motorudur. Diğer otomasyon araçlarından farklı olarak, Ansible “agentless” (ajansız) bir mimariye sahiptir. Bu, yönetilecek sunuculara özel bir yazılım yüklemenize gerek olmadığı anlamına gelir. Bunun yerine, SSH protokolünü kullanarak hedef makinelerle iletişim kurar ve Python tabanlı modüller aracılığıyla görevleri yerine getirir.

Ansible’ın Temel Özellikleri ve Avantajları:

* Ajansız Mimari: Hedef sunucularda herhangi bir aracı yazılım çalıştırma veya kurma ihtiyacını ortadan kaldırır. Bu, kurulumu basitleştirir, güvenlik açıklarını azaltır ve sistem kaynaklarını korur.
* Basitlik ve Okunabilirlik: Yapılandırma dosyaları ve otomasyon senaryoları (playbook’lar) YAML formatında yazılır. YAML, insan tarafından kolayca okunabilen ve anlaşılabilen bir veri serileştirme dilidir. Bu, Ansible’ı yeni başlayanlar için bile erişilebilir kılar.
* Güçlü ve Esnek: Uygulama dağıtımından karmaşık çoklu sunucu orkestrasyonuna kadar geniş bir yelpazede görevleri otomatikleştirebilir. Binlerce modülü sayesinde neredeyse her türlü görevi yerine getirebilir.
* Idempotency (Tekrarlanabilirlik): Ansible playbook’ları idempotent’tir. Bu, bir playbook’u birden fazla kez çalıştırdığınızda, sistemin yalnızca gerekli değişiklikleri yapacağı ve zaten doğru durumda olan bileşenleri değiştirmeyeceği anlamına gelir. Bu, beklenmedik yan etkileri önler ve tutarlı bir durum sağlar.
* SSH Üzerinden İletişim: Mevcut SSH altyapınızı kullanır, bu da ek güvenlik yapılandırmasına genellikle gerek olmadığı anlamına gelir.
* Geniş Topluluk Desteği: Büyük ve aktif bir topluluğa sahip olması, sorun giderme ve öğrenme süreçlerinde önemli bir kaynaktır.

Ansible, sunucu yapılandırmasını standartlaştırmak, uygulama dağıtım süreçlerini hızlandırmak, sürekli entegrasyon/sürekli dağıtım (CI/CD) boru hatlarını otomatikleştirmek ve manuel hataları azaltmak için idealdir. Özellikle Ubuntu 18.04 gibi yaygın bir sunucu işletim sisteminde, Ansible’ın gücünü kullanmak, operasyonel verimliliğinizi önemli ölçüde artıracaktır.

Ön Gereksinimler

Bu kılavuzu takip etmek için aşağıdaki ön gereksinimlere sahip olmanız gerekmektedir:

* Ubuntu 18.04 Kontrol Düğümü (Control Node): Ansible’ı kuracağınız ve playbook’ları çalıştıracağınız ana makine. Bu bir sanal makine, fiziksel sunucu veya hatta bir masaüstü bilgisayar olabilir. İnternet erişimi olmalıdır.
* Sudo Ayrıcalıkları: Kontrol düğümünde sudo komutunu kullanabilen bir kullanıcı hesabına sahip olmalısınız.
* Temel Linux Komut Satırı Bilgisi: Terminalde temel komutları (örn. apt, cd, ls, nano veya vi) kullanabilme yeteneği.
* Hedef Makine (Managed Node – İsteğe Bağlı ama Önerilir): Ansible ile yöneteceğiniz en az bir adet Ubuntu 18.04 (veya başka bir Linux dağıtımı) sunucusu. Bu makinede SSH erişimi olmalı ve python yüklü olmalıdır (çoğu Linux dağıtımında varsayılan olarak gelir). Bu makineye de sudo ayrıcalıklarına sahip bir kullanıcı ile erişiminiz olmalıdır.

Bu gereksinimleri karşıladığınızdan emin olduktan sonra, kurulum sürecine başlayabiliriz.

Ansible Kurulumu

Ansible’ı Ubuntu 18.04 üzerine kurmanın en önerilen yolu, resmi PPA (Personal Package Archive) deposunu kullanmaktır. Bu, size en güncel ve kararlı Ansible sürümünü sağlayacaktır.

Adım 1: Sistem Paketlerini Güncelleme

Kuruluma başlamadan önce, sisteminizdeki mevcut paket listesini güncellemeli ve yüklü paketleri en son sürümlerine yükseltmelisiniz. Bu, olası bağımlılık sorunlarını önlemeye yardımcı olur.

sudo apt update
sudo apt upgrade -y

sudo apt update komutu, yerel paket indeksini güncellerken, sudo apt upgrade -y komutu, onay istemeden mevcut paketleri yükseltir.

Adım 2: Ansible PPA Deposunu Ekleme

Ubuntu’nun varsayılan depoları genellikle Ansible’ın eski bir sürümünü içerir. En güncel sürüme sahip olmak için Ansible’ın resmi PPA’sını eklememiz gerekir. Bunun için software-properties-common paketine ihtiyacımız var.

sudo apt install software-properties-common -y
sudo apt-add-repository --yes --update ppa:ansible/ansible

* sudo apt install software-properties-common -y: Bu paket, PPA’ları yönetmek için gerekli araçları sağlar.
* sudo apt-add-repository --yes --update ppa:ansible/ansible: Bu komut, Ansible PPA’sını sisteminize ekler ve aynı zamanda paket listesini günceller. --yes bayrağı, PPA ekleme onayını otomatik olarak verirken, --update bayrağı apt update komutunu otomatik olarak çalıştırır.

Adım 3: Ansible’ı Kurma

PPA eklendikten ve paket listesi güncellendikten sonra, Ansible’ı kurmaya hazırsınız.

sudo apt install ansible -y

Bu komut, Ansible paketini ve tüm bağımlılıklarını sisteminize yükleyecektir.

Adım 4: Kurulumu Doğrulama

Ansible kurulumunun başarılı olup olmadığını doğrulamak için ansible --version komutunu kullanabilirsiniz.

ansible --version

Çıktı, yüklü Ansible sürümünü, yapılandırma dosyasının konumunu, Python sürümünü ve diğer detayları göstermelidir. Örneğin:

ansible 2.9.x
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/youruser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.x (default, ...)

Eğer bu çıktıyı görüyorsanız, Ansible başarıyla kurulmuş demektir.

Temel Ansible Yapılandırması

Ansible, kurulumdan sonra hemen kullanılabilir olsa da, en iyi uygulamalar ve daha verimli kullanım için bazı temel yapılandırmalar yapmak önemlidir. Ansible’ın iki ana yapılandırma bileşeni vardır: Ansible Yapılandırma Dosyası (ansible.cfg) ve Envanter Dosyası (hosts).

Ansible Yapılandırma Dosyası (ansible.cfg)

Ansible’ın ana yapılandırma dosyası genellikle /etc/ansible/ansible.cfg konumunda bulunur. Bu dosya, Ansible’ın nasıl davranacağını kontrol eden global ayarları içerir. Ayrıca, projeye özel yapılandırmalar için çalışma dizininizde (./ansible.cfg) veya kullanıcınızın ana dizininde (~/.ansible.cfg) de bir ansible.cfg dosyası oluşturabilirsiniz. Ansible, bu dosyaları belirli bir öncelik sırasına göre okur.

Şimdi varsayılan yapılandırma dosyasını inceleyelim ve bazı önemli ayarları değiştirelim veya ekleyelim.

sudo nano /etc/ansible/ansible.cfg

Aşağıdaki satırları bulup düzenleyebilir veya dosyanın ilgili bölümüne ekleyebilirsiniz:

[defaults]
inventory      = /etc/ansible/hosts  # Varsayılan envanter dosyasının yolu
remote_user    = your_remote_user   # Hedef makinelerde SSH ile bağlanılacak kullanıcı adı
ask_pass       = false              # Playbook çalıştırırken SSH parolası sormayı devre dışı bırak
host_key_checking = false           # İlk bağlantıda SSH anahtar kontrolünü devre dışı bırak (test ortamları için uygun, üretimde önerilmez!)
forks          = 5                  # Aynı anda kaç hedefe paralel olarak bağlanılacağını belirler
#log_path       = /var/log/ansible.log # Ansible loglarının yazılacağı yol (yorum satırından çıkarılabilir)
#roles_path     = /etc/ansible/roles # Rollerin aranacağı varsayılan yol

Önemli Ayarların Açıklaması:

* inventory: Ansible’ın yönetilecek sunucuların listesini nerede bulacağını belirtir. Varsayılan olarak /etc/ansible/hosts‘tur.
* remote_user: Hedef makinelere bağlanırken kullanılacak varsayılan SSH kullanıcı adını belirler. Kendi hedef sunucunuzdaki kullanıcı adınızla değiştirin (örn. ubuntu, root veya özel bir kullanıcı adı).
* ask_pass: SSH bağlantısı için parola sorulup sorulmayacağını kontrol eder. false olarak ayarlandığında, Ansible SSH anahtarlarıyla parola sormadan bağlanmaya çalışır. Bu, SSH anahtar tabanlı kimlik doğrulama kullanırken önemlidir.
* host_key_checking: Ansible’ın bilinen ana bilgisayarlar dosyasındaki (known_hosts) anahtar parmak izlerini kontrol edip etmeyeceğini belirler. false olarak ayarlanması, özellikle ilk kez yeni sunuculara bağlanırken hata almamak için kullanışlı olabilir. Ancak, üretim ortamlarında veya güvenlik hassasiyeti olan durumlarda true olarak bırakılması veya bu ayarın hiç yapılmaması (varsayılanı truedur) şiddetle tavsiye edilir. Güvenli bir şekilde ana bilgisayar anahtarlarını eklemek için, ilk bağlantıyı manuel olarak yapabilir veya ssh-keyscan gibi araçları kullanabilirsiniz.
* forks: Ansible’ın aynı anda kaç hedefe paralel olarak bağlanacağını belirler. Daha yüksek bir değer, büyük envanterler için daha hızlı yürütme sağlayabilir, ancak kontrol düğümünün kaynaklarını tüketebilir.
* log_path: Ansible’ın tüm işlemlerini kaydettiği log dosyasının yolunu belirtir. Sorun giderme için çok yararlıdır.
* roles_path: Ansible rollerinin aranacağı varsayılan dizini belirtir. Roller, Ansible’da kodu düzenlemenin ve yeniden kullanmanın bir yoludur.

Yaptığınız değişiklikleri kaydedip (Ctrl+O, Enter) ve dosyayı kapatın (Ctrl+X).

Envanter Dosyası (/etc/ansible/hosts)

Envanter dosyası, Ansible’ın yöneteği tüm sunucuların (hedef makinelerin) bir listesini içerir. Bu dosya, sunucuları gruplandırmanıza, her sunucuya özel değişkenler atamanıza ve Ansible’ın onlarla nasıl etkileşim kuracağını belirlemenize olanak tanır. Ansible, varsayılan olarak /etc/ansible/hosts dosyasını kullanır.

Şimdi bu dosyayı düzenleyerek ilk hedef makinemizi ekleyelim.

sudo nano /etc/ansible/hosts

Dosyanın içeriği genellikle yorum satırlarıyla doludur. Tüm bu yorumları silebilir veya kendi eklemelerinizi dosyanın sonuna yapabilirsiniz. Envanter dosyası, INI formatında veya YAML formatında olabilir. Bu kılavuzda daha basit olan INI formatını kullanacağız.

[webservers]
web1.example.com
192.168.1.101

[databases]
db1.example.com
192.168.1.102

[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_private_key_file=/home/your_user/.ssh/id_rsa

Açıklamalar:

* [webservers] ve [databases]: Bunlar grup adlarıdır. Sunucuları mantıksal olarak gruplandırmanıza olanak tanır. Daha sonra bir playbook’u belirli bir gruba karşı çalıştırabilirsiniz.
* web1.example.com ve 192.168.1.101: Bunlar hedef makinelerinizin ana bilgisayar adları veya IP adresleridir. Kendi hedef sunucunuzun IP adresi veya ana bilgisayar adıyla değiştirin.
* [all:vars]: Bu bölüm, envanterdeki tüm sunucular için geçerli olacak genel değişkenleri tanımlar.
* ansible_python_interpreter: Hedef makinedeki Python yorumlayıcısının yolunu belirtir. Ansible, çoğu işlemi için Python’a ihtiyaç duyar. Ubuntu 18.04’te varsayılan Python 3’tür, bu nedenle /usr/bin/python3 genellikle doğru yoldur.
* ansible_ssh_private_key_file: Ansible’ın hedef makineye bağlanmak için kullanacağı SSH özel anahtarının yolunu belirtir. Bu, SSH anahtar tabanlı kimlik doğrulama kullanırken kritik öneme sahiptir. Kendi özel anahtarınızın yoluyla değiştirin (örn. /home/your_user/.ssh/id_rsa).

Yaptığınız değişiklikleri kaydedip dosyayı kapatın.

SSH Anahtar Tabanlı Kimlik Doğrulama (Önerilen Yöntem)

Ansible, hedef makinelerle SSH üzerinden iletişim kurar. Her seferinde parola girmek yerine, SSH anahtar tabanlı kimlik doğrulama kullanmak hem daha güvenli hem de daha otomatiktir.

Adım 1: SSH Anahtarı Oluşturma (Kontrol Düğümünde)

Kontrol düğümünüzde henüz bir SSH anahtar çiftiniz yoksa, bir tane oluşturmanız gerekir.

ssh-keygen -t rsa -b 4096

* ssh-keygen: Anahtar oluşturma komutu.
* -t rsa: RSA algoritmasını kullan.
* -b 4096: 4096 bitlik bir anahtar boyutu kullan (daha güvenli).

Komutu çalıştırdığınızda, anahtarı kaydetmek için bir konum ve isteğe bağlı olarak bir parola (passphrase) sorulacaktır. Varsayılan konum (~/.ssh/id_rsa) genellikle iyidir. Güvenliği artırmak için bir parola belirleyebilirsiniz, ancak Ansible otomasyonunu basitleştirmek için boş bırakmayı tercih edebilirsiniz (bu durumda dikkatli olun).

Bu işlem, ~/.ssh/id_rsa (özel anahtar) ve ~/.ssh/id_rsa.pub (genel anahtar) dosyalarını oluşturacaktır.

Adım 2: Genel Anahtarı Hedef Makineye Kopyalama

Oluşturduğunuz genel anahtarı (id_rsa.pub), Ansible ile yöneteceğiniz her hedef makineye kopyalamanız gerekir. Bunun için ssh-copy-id komutunu kullanmak en kolay yoldur.

ssh-copy-id your_remote_user@your_target_ip_or_hostname

* your_remote_user: Hedef makinede SSH ile bağlanacağınız kullanıcı adı.
* your_target_ip_or_hostname: Hedef makinenin IP adresi veya ana bilgisayar adı.

Komut sizden hedef makinenin parolasını isteyecektir. Doğru parolayı girdikten sonra, genel anahtarınız hedef makinedeki ~/.ssh/authorized_keys dosyasına eklenecektir.

Bu adımı, yöneteceğiniz her hedef makine için tekrarlayın.

Adım 3: SSH Bağlantısını Doğrulama

Genel anahtarınızı kopyaladıktan sonra, parola girmeden hedef makineye SSH yapabildiğinizi doğrulamalısınız.

ssh your_remote_user@your_target_ip_or_hostname

Eğer parola sormadan bağlanabiliyorsanız, SSH anahtar tabanlı kimlik doğrulamanız başarıyla kurulmuş demektir. Bağlantıyı kapatmak için exit yazın.

Ansible ile İlk Bağlantı Testi (Ping Modülü)

Tüm kurulum ve yapılandırma adımlarını tamamladıktan sonra, Ansible’ın hedef makinelerinizle iletişim kurabildiğini test edebilirsiniz. Bunun için ansible komutunu ve ping modülünü kullanacağız.

ansible all -m ping

* ansible: Ansible komut satırı aracı.
* all: Envanter dosyasındaki tüm sunuculara (veya belirli bir grup adı, örn. webservers) karşı çalıştırılacağını belirtir.
* -m ping: ping modülünü kullanacağımızı belirtir. Bu modül, hedef makinede basit bir bağlantı testi yapar.

Eğer her şey yolundaysa, aşağıdaki gibi bir çıktı almalısınız:

192.168.1.101 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Bu çıktı, Ansible’ın hedef makineye başarıyla bağlanabildiğini, Python yorumlayıcısını keşfettiğini ve ping modülünün pong yanıtı döndürdüğünü gösterir. changed: false ifadesi, herhangi bir sistem değişikliğinin yapılmadığını belirtir.

Eğer bir hata alırsanız (örn. “unreachable”, “Authentication failed”), SSH bağlantı ayarlarınızı (remote_user, ansible_ssh_private_key_file), envanter dosyasındaki IP adresini veya SSH anahtar kopyalama işlemini kontrol etmelisiniz.

İlk Playbook’unuzu Çalıştırma

Ansible’ın gücü, ad-hoc komutlarla sınırlı değildir; asıl gücü playbook’lardan gelir. Playbook’lar, YAML formatında yazılmış, bir dizi görevi (task) tanımlayan dosyalardır. Şimdi basit bir playbook oluşturup çalıştırarak hedef makinemizde bir paket kuralım.

Adım 1: Playbook Dosyası Oluşturma

Kontrol düğümünüzde bir playbook dosyası oluşturalım. Örneğin, ana dizininizde first_playbook.yml adında bir dosya oluşturabilirsiniz:

nano ~/first_playbook.yml

Aşağıdaki içeriği dosyaya yapıştırın:

---
- name: Hedef Sunucuda Nginx Kurulumu ve Başlatılması
  hosts: webservers # Envanterdeki 'webservers' grubuna uygula
  become: true      # Görevleri sudo ayrıcalıklarıyla çalıştır
  tasks:
    - name: Sistem Paketlerini Güncelle
      apt:
        update_cache: yes
        upgrade: dist
        autoclean: yes

    - name: Nginx Paketini Kur
      apt:
        name: nginx
        state: present

    - name: Nginx Servisini Başlat ve Otomatik Başlatmayı Etkinleştir
      systemd:
        name: nginx
        state: started
        enabled: yes

Playbook Açıklaması:

* ---: YAML dosyasının başlangıcını belirtir.
* - name: Hedef Sunucuda Nginx Kurulumu ve Başlatılması: Playbook’un genel amacını açıklayan bir isimdir.
* hosts: webservers: Bu playbook’un envanter dosyasındaki webservers grubuna uygulanacağını belirtir. Eğer tüm sunuculara uygulamak isterseniz all yazabilirsiniz.
* become: true: Bu, playbook’taki tüm görevlerin sudo ayrıcalıklarıyla çalıştırılmasını sağlar. Paket kurulumu ve servis yönetimi gibi işlemler için gereklidir.
* tasks:: Playbook’un gerçekleştireceği görevlerin listesini başlatır.
* name: Sistem Paketlerini Güncelle: İlk görevin adıdır.
* apt:: Ansible’ın apt modülünü kullandığımızı belirtir. Bu modül, Debian/Ubuntu tabanlı sistemlerde paket yönetimi için kullanılır.
* update_cache: yes: apt update komutunu çalıştırır.
* upgrade: dist: apt dist-upgrade komutunu çalıştırır.
* autoclean: yes: Gereksiz paketleri temizler.
* name: Nginx Paketini Kur: İkinci görevin adıdır.
* apt:: Yine apt modülü kullanılır.
* name: nginx: Kurulacak paketin adıdır.
* state: present: Paketin kurulu olmasını sağlar (kurulu değilse kurar, kuruluysa dokunmaz – idempotent).
* name: Nginx Servisini Başlat ve Otomatik Başlatmayı Etkinleştir: Üçüncü görevin adıdır.
* systemd:: Ansible’ın systemd modülünü kullandığımızı belirtir. Bu modül, systemd kullanan sistemlerde servisleri yönetmek için kullanılır.
* name: nginx: Yönetilecek servisin adıdır.
* state: started: Servisin çalışır durumda olmasını sağlar.
* enabled: yes: Servisin sistem başlangıcında otomatik olarak başlamasını sağlar.

Dosyayı kaydedip kapatın.

Adım 2: Playbook’u Çalıştırma

Playbook’u çalıştırmak için ansible-playbook komutunu kullanırız:

ansible-playbook ~/first_playbook.yml

Komutu çalıştırdığınızda, Ansible hedef makinelere bağlanacak ve playbook’taki görevleri sırasıyla yürütecektir. Çıktı, her görevin durumunu gösterecektir:

PLAY [Hedef Sunucuda Nginx Kurulumu ve Başlatılması] *

TASK [Gathering Facts] *
ok: [192.168.1.101]

TASK [Sistem Paketlerini Güncelle] *
changed: [192.168.1.101]

TASK [Nginx Paketini Kur] 
changed: [192.168.1.101]

TASK [Nginx Servisini Başlat ve Otomatik Başlatmayı Etkinleştir] *
changed: [192.168.1.101]

PLAY RECAP *
192.168.1.101              : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

* Gathering Facts: Ansible’ın hedef makine hakkında sistem bilgilerini topladığı ilk görevdir.
* changed: Bu, Ansible’ın görevi yürütürken hedef sistemde bir değişiklik yaptığını gösterir.
* ok: Görevin başarıyla tamamlandığını ve sistemde herhangi bir değişiklik yapılmadığını (çünkü istenen durum zaten mevcuttu) gösterir.
* PLAY RECAP: Playbook’un genel özetini sunar. ok, changed, unreachable (erişilemeyen), failed (başarısız olan) gibi metrikleri gösterir.

Playbook başarıyla tamamlandıysa, hedef makinenize SSH ile bağlanıp Nginx’in kurulu ve çalıştığını kontrol edebilirsiniz:

ssh your_remote_user@your_target_ip_or_hostname
systemctl status nginx

Çıktıda Active: active (running) görmelisiniz. Ayrıca, hedef sunucunun IP adresini bir web tarayıcısına yazarak Nginx’in varsayılan hoş geldiniz sayfasını da görebilirsiniz.

Ansible’da İleri Kavramlar (Kısaca)

Bu hızlı başlangıç kılavuzu, Ansible’ın temel kurulumunu ve kullanımını kapsasa da, Ansible’ın çok daha derin ve güçlü yetenekleri vardır. İşte bazı ileri kavramlar:

* Modüller: Ansible’ın yüzlerce yerleşik modülü vardır (örn. apt, yum, service, copy, file, user, command, shell). Her modül belirli bir görevi yerine getirmek için tasarlanmıştır. Kendi özel modüllerinizi de yazabilirsiniz.
* Değişkenler: Playbook’larınızda dinamik değerler kullanmanıza olanak tanır. Envanterde, playbook’larda veya ayrı değişken dosyalarında tanımlanabilirler.
* Şablonlar (Templates): Jinja2 şablon motorunu kullanarak dinamik yapılandırma dosyaları oluşturmanıza olanak tanır. Örneğin, sunucudaki bir Nginx yapılandırma dosyasını değişkenlerle doldurarak oluşturabilirsiniz.
* Handler’lar: Bir görev belirli bir değişikliği tetiklediğinde (örn. bir yapılandırma dosyası değiştiğinde) çalıştırılan özel görevlerdir. Genellikle bir servisi yeniden başlatmak için kullanılırlar.
* Roller: Ansible projelerini düzenlemenin ve yeniden kullanılabilir hale getirmenin en iyi yoludur. Roller, görevleri, değişkenleri, şablonları ve diğer dosyaları belirli bir dizin yapısı içinde gruplandırır. Büyük ve karmaşık projelerde olmazsa olmazdır.
* Ansible Vault: Hassas verileri (parolalar, API anahtarları vb.) şifrelemek ve yönetmek için kullanılır. Bu sayede hassas bilgilerini versiyon kontrol sistemlerinde güvenle saklayabilirsiniz.
* Dinamik Envanter: Bulut sağlayıcılarından (AWS, Azure, Google Cloud vb.) veya diğer harici kaynaklardan dinamik olarak envanter oluşturmanıza olanak tanır.

Sık Karşılaşılan Sorunlar ve Çözümleri

Ansible ile çalışırken karşılaşabileceğiniz bazı yaygın sorunlar ve potansiyel çözümleri:

* UNREACHABLE! Hatası:
* Neden: Ansible hedef makineye SSH üzerinden bağlanamıyor.
* Çözüm:
* Hedef makinenin IP adresini veya ana bilgisayar adını kontrol edin.
* Hedef makinenin açık olduğundan ve ağa bağlı olduğundan emin olun.
* Hedef makinede SSH servisinin çalıştığından emin olun (sudo systemctl status ssh).
* Kontrol düğümünüzden hedef makineye manuel olarak SSH yapmayı deneyin (ssh user@ip).
* Firewall ayarlarını kontrol edin (hem kontrol düğümünde hem de hedef makinede). SSH portu (varsayılan 22) açık olmalıdır.
* ansible.cfg dosyasındaki remote_user ve ansible_ssh_private_key_file ayarlarının doğru olduğundan emin olun.
* Authentication failed Hatası:
* Neden: Ansible, hedef makineye bağlanmak için doğru kimlik doğrulama bilgilerini sağlayamıyor.
* Çözüm:
* SSH anahtar tabanlı kimlik doğrulama kullanıyorsanız, genel anahtarınızın hedef makineye doğru şekilde kopyalandığından emin olun (ssh-copy-id).
* SSH özel anahtarınızın izinlerini kontrol edin (chmod 600 ~/.ssh/id_rsa).
* ansible.cfg veya envanterdeki ansible_ssh_private_key_file yolunun doğru olduğundan emin olun.
* Eğer parola kullanıyorsanız, ansible-playbook komutuna --ask-pass veya --ask-become-pass bayraklarını eklemeniz gerekebilir.
* sudo veya Ayrıcalık Yükseltme Sorunları:
* Neden: Playbook’taki become: true ile çalıştırılan görevler yetersiz ayrıcalık nedeniyle başarısız oluyor.
* Çözüm:
* Hedef makinedeki remote_user kullanıcısının sudo ayrıcalıklarına sahip olduğundan emin olun.
* Hedef makinedeki sudoers dosyasını kontrol edin (sudo visudo). Kullanıcının parolasız sudo yetkisi varsa (örn. %sudo ALL=(ALL) NOPASSWD: ALL), sorun yaşamazsınız. Aksi takdirde, ansible-playbook komutuna --ask-become-pass bayrağını eklemeniz gerekebilir.
* Python Yorumlayıcı Sorunları:
* Neden: Ansible, hedef makinede uygun bir Python yorumlayıcısı bulamıyor veya kullanamıyor.
* Çözüm:
* Hedef makinede Python’un yüklü olduğundan emin olun (python3 --version).
* Envanter dosyasındaki veya ansible.cfg dosyasındaki ansible_python_interpreter ayarının doğru yola işaret ettiğinden emin olun (örn. /usr/bin/python3).

En İyi Uygulamalar

Ansible’ı verimli ve güvenli bir şekilde kullanmak için bazı en iyi uygulamaları takip etmek önemlidir:

* Versiyon Kontrolü Kullanın: Playbook’larınızı, envanter dosyalarınızı ve diğer Ansible yapılandırmalarınızı Git gibi bir versiyon kontrol sisteminde saklayın. Bu, değişiklikleri izlemenizi, geri almanızı ve ekip içinde işbirliği yapmanızı sağlar.
* Rolleri Kullanın: Karmaşık projelerde, playbook’ları daha küçük, yönetilebilir ve yeniden kullanılabilir birimlere ayırmak için rolleri kullanın. Bu, kod tekrarını azaltır ve okunabilirliği artırır.
* Ansible Vault ile Hassas Verileri Yönetin: Parolalar, API anahtarları veya diğer hassas verileri doğrudan playbook’lara veya envanter dosyalarına yazmaktan kaçının. Bunun yerine Ansible Vault’u kullanarak bu verileri şifreleyin.
* Idempotency’ye Odaklanın: Playbook’larınızı idempotent olacak şekilde yazın. Yani, birden fazla kez çalıştırıldığında aynı sonucu verecek ve gereksiz değişiklikler yapmayacak şekilde tasarlayın.
* Test Ortamında Playbook’ları Test Edin: Playbook’larınızı üretim ortamına dağıtmadan önce her zaman bir geliştirme veya test ortamında kapsamlı bir şekilde test edin.
* Envanteri Düzenli Tutun: Envanter dosyanızı mantıklı gruplara ayırarak ve değişkenleri doğru yerlerde tanımlayarak düzenli tutun.
* ansible.cfg Dosyasını Özelleştirin: Projeleriniz için özel ihtiyaçlara göre ansible.cfg dosyasını özelleştirmeyi öğrenin.

Sonuç

Bu kapsamlı kılavuzda, Ansible’ı Ubuntu 18.04 kontrol düğümünüze nasıl kuracağınızı, temel yapılandırmaları nasıl yapacağınızı ve ilk playbook’unuzu nasıl çalıştıracağınızı adım adım öğrendiniz. Ansible’ın ajansız mimarisi, YAML tabanlı basitliği ve güçlü otomasyon yetenekleri, onu modern IT operasyonları için vazgeçilmez bir araç haline getirmektedir.

Artık Ansible’ın temel kurulumuna ve kullanımına hakim olduğunuza göre, otomasyon yolculuğunuza devam edebilirsiniz. Ansible’ın zengin modül setini keşfetmek, daha karmaşık playbook’lar yazmak, rolleri kullanmak ve Ansible Vault ile hassas verileri yönetmek gibi konuları araştırmanız, otomasyon becerilerinizi bir üst seviyeye taşıyacaktır. Unutmayın, pratik yapmak ve dokümantasyonu okumak, Ansible’da ustalaşmanın anahtarıdır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.