Yeni yazı: Active Directory Sağlık Kontrolü: krbtgt Rotasyonu ve Hesap Yaşam Döngüsü
Ansible Nedir ve Ne İşe Yarar?

Ansible Nedir ve Ne İşe Yarar?

İçindekiler

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   # düz metin parola: yalnızca deneme ortamı için, üretimde SSH anahtarı ya da ansible-vault kullanın

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.


ssh-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_file=~/.ssh/id_rsa
192.168.1.201 ansible_user=kullanıcı-adı ansible_ssh_private_key_file=~/.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

Alternatifler: Chef, Puppet, SaltStack ve Terraform

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.

Sonuç

  • Agentless olmak kurulumu değil, kapsamı değiştirir. Hedef makineye hiçbir şey kurmadığınız için SSH ile erişebildiğiniz her sunucu ilk günden yönetilebilir hâle gelir.
  • Envanter dosyasında düz metin parola tutmayın. ansible_password satırı, dosyayı okuyabilen herkese o parolayı verir; doğru yol SSH anahtarı ya da ansible-vault.
  • Ansible yapılandırmayı, Terraform altyapıyı yönetir. Biri var olan makinenin içini düzenler, diğeri makinenin kendisini yaratır; rakip değil, ardışık iki adımdır.

Ansible’ı gerçek bir işin içinde görmek için: Evdeki Veri Merkezi: Proxmox ile Kendi Homelab’inizi Kurun.

Paylaş :

İlgili Yazılar

Linux Dosya Oluşturma ve Kopyalama Komutları: Dosyalarınızı Yönetmek

Linux Dosya Oluşturma ve Kopyalama Komutları: Dosyalarınızı Yönetmek

cp masum görünen bir komuttur: kaynağı yazarsınız, hedefi yazarsınız, biter. Ama aynı komut, hedefte zaten bir dosya varsa hiçbir şey sormadan üzerine yazar — ve üzerine yazılan içerik geri gelmez. Kopyalamak kolaydır; komutun hangi durumda tam olarak ne yaptığını bilmek işin asıl kısmıdır.

Dosya Türleri ve İzinleri: Linux Dosya Yönetiminin Temelleri

Dosya Türleri ve İzinleri: Linux Dosya Yönetiminin Temelleri

ls -l çalıştırdığınızda her satırın başında on karakterlik bir dizi görürsünüz: -rw-r--r--. Çoğu kullanıcı bu diziyi okumadan geçer ve izin gerektiğinde chmod 777 yazıp sorunu “çözer” — sonra o dosyayı sistemdeki herkesin değiştirebildiğini fark etmez.

Symbolic Link ve Hard Link

Symbolic Link ve Hard Link

Bir dosyayı sildiniz ve yerinde duran bağlantı hâlâ orada — ama artık hiçbir şeye açılmıyor. Ya da tam tersi: dosyayı sildiniz, du çıktısında yer boşalmadı. İkisi de aynı sorunun iki yüzüdür: Linux’ta bir dosya adı ile dosyanın kendisi ayrı şeylerdir ve ln komutunun iki farklı biçimi bu ikisini farklı uçlarından bağlar.