, ,

Ansible in a Nutshell


Ansible, açık kaynak kodlu bir otomasyon aracı olup, IT altyapısının yönetimini kolaylaştırmak için tasarlanmıştır. Agentless bir yapıya sahiptir ve SSH protokolü üzerinden çalışır. Ansible, konfigürasyon yönetimi, uygulama yayını ve altyapı otomasyonu gibi birçok alanda kullanılır.

Avantajları ve Kullanım Alanları:

  • Kolay Kullanım: Ansible, YAML tabanlı bir dil olan Playbook kullanır, bu da anlaşılır ve okuması kolay bir çözüm sunar.
  • Agent Gerektirmez: Hedef sistemlerde ek bir yazılımın yüklenmesini gerektirmez.
  • Esneklik: Farklı platformlar ve ortamlar için kolayca uyarlanabilir.
  • Genişletilebilirlik: Zengin modül desteği ile birçok senaryoya uygun hale getirilebilir.

Ansible, hem küçük şirketlerde hem de büyük kurumsal çevrelerde, altyapının çeşitli bileşenlerini yönetmek için yaygın bir şekilde kullanılır. Özellikle hibrit bulut yapıları, konteyner tabanlı uygulamalar ve mikro hizmet altyapılarında kritik rol oynar.

Ansible Temelleri

Ansible Inventory File: Ansible’ın yöneteceği sunucuları tanımlayan bir dosya olan inventory file, varsayılan olarak “/etc/ansible/hosts” konumunda bulunur. Bu dosya, hedef sistemlerin IP adreslerini veya DNS adlarını içerir. Inventory dosyası iki formatta olabilir: ini ve yaml.

Host Gruplarını Tanımlama:

[webservers]
web1.example.com
web2.example.com

[dbservers]
db1.example.com
db2.example.com

Bu yapı, sunucuları gruplara ayırır ve belirli işlemleri sadece ilgili gruplara uygulama esnekliği sunar. Daha karmaşık senaryolar için gruplar içerisinde de alt gruplar tanımlanabilir.

Özelleştirilmiş Envanter Örneği:

[all:vars]
ansible_user=admin
ansible_ssh_private_key_file=/home/admin/.ssh/id_rsa

[webservers]
web1.example.com ansible_host=192.168.1.10 ansible_port=2222
web2.example.com ansible_host=192.168.1.11 ansible_port=2222

Ansible Ad-Hoc Komutları

Ad-hoc komutlar, Ansible’ın Playbook yazmadan, tek seferlik veya hızlı işlevsellik için kullanılır. Bu komutlar genellikle test veya acil durum senaryolarında kullanılır.

1- The Shell Module: Shell modülü, uzak sunucularda shell komutları çalıştırmak için kullanılır. Örnek bir komut:

ansible all -m shell -a "pwd"

Bu komut, tüm hedef sunucularda “pwd” komutunu çalıştırır. Komutun sonuçları konsola yazdırılır.

2- The Script Module: Yerel bir script dosyasını hedef sunuculara aktarabilir ve çalıştırabilirsiniz. Bu, karmaşık işlemleri tek bir script ile otomatik hale getirmeye olanak tanır:

ansible all -m script -a "/path/to/script.sh"

3- The APT Module: Debian tabanlı (Red Hat tabanlı sistemlerde yum ya da dnf ) sistemlerde paket yönetimi yapar:

ansible all -m apt -a "name=nginx state=present update_cache=true"

Bu komut, nginx paketini kurar ve öncesinde depo bilgilerini günceller.

4- The Service Module: Servislerin durumunu kontrol eder ve yönetir:

ansible all -m service -a "name=nginx state=started enabled=true"

5- The User Module: Kullanıcı yönetimi için kullanılır:

ansible all -m user -a "name=johndoe state=present groups=wheel,developers"

Bu komut, “johndoe” adlı bir kullanıcı oluşturur ve bu kullanıcıyı wheel ve developers gruplarına ekler.

Görev Otomasyonu

Ansible, zamanlanmış görevler ve periyodik iş akışları otomatikleştirmek için ideal bir aracıdır.

Cron ile Zamanlanmış Görevler: Crontab dosyasını düzenleyerek zamanlanmış görevler eklenebilir. Ansible, cron modülü ile bu süreci kolaylaştırır:

ansible all -m cron -a "name='backup' minute='0' hour='2' job='/usr/bin/backup.sh'"

Bu komut, her gece saat 02:00’de yedekleme script’inin çalışmasını sağlar.

Anacron Kullanımı:
Anacron, belirli bir zamanda çalıştırılamayan görevlerin daha sonra çalıştırılmasını sağlayan bir araçtır. Cron ile arasındaki temel fark, Anacron’un sistemin belirli bir zamanda kapalı olması durumunda bile görevleri daha sonra gerçekleştirebilmesidir. Bu, özellikle sunucular yerine masaüstü sistemlerde veya düzensiz çalışma saatleri olan cihazlarda faydalıdır.

Anacron ile zamanlanmış görevler tanımlamak için /etc/anacrontab dosyası kullanılır. Örnek bir Anacron görevi:

1   5   daily_backup   /usr/bin/backup.sh

Bu yapı, her gün çalıştırılacak “daily_backup” adlı bir görevi tanımlar. Anacron, sistem açıldığında bu görevi çalıştırır.

Bash Betik Otomasyonu

Bash betikleri, sistem yönetiminde temel otomasyon araçları olarak kullanılır. Bash ile basit scriptler oluşturup süreçlerinizi kolayca otomatikleştirebilirsiniz.

Bash Shell Scripting ile Otomasyon:
Bash betikleri, sistem görevlerini otomatik hale getirmek için kullanılır. Örneğin, bir dizindeki tüm dosyaları arşivlemek için basit bir betik:

#!/bin/bash
tar -czvf backup.tar.gz /home/user/documents

Bu betik, “documents” klasöründeki tüm dosyaları sıkıştırarak bir arşiv dosyasına kaydeder.

Kaynak IP Adresine Dayalı Paketleri Düşürme:
Güvenlik senaryolarında iptables kullanarak belirli bir IP adresine gelen paketleri düşürmek için bir bash betiği:

#!/bin/bash
iptables -A INPUT -s 192.168.1.100 -j DROP

Bu komut, belirtilen IP adresinden gelen tüm bağlantıları engeller.

IP Adresi Listesini Yönetme:
Bir listeye dayalı IP adresleri üzerinde işlem yapmak için:

#!/bin/bash
for ip in $(cat ip_list.txt); do
iptables -A INPUT -s $ip -j DROP
done

Bu betik, ip_list.txt dosyasındaki her IP adresi için iptables kuralları ekler.

Sistem Yönetimi ve Menü Tabanlı Araçlar

Bash Menüler Kullanarak Sistem Yönetimi:
Etkileşimli bash menüleri, sistem yöneticilerinin görevlerini kolaylaştırır. Örnek bir menü:

#!/bin/bash
PS3='Bir işlem seçin: '
options=("Kullanıcı Ekle" "Servis Başlat" "Çıkış")
select opt in "${options[@]}"
do
case $opt in
"Kullanıcı Ekle")
read -p "Kullanıcı adı: " username
useradd $username
echo "Kullanıcı eklendi."
;;
"Servis Başlat")
read -p "Servis adı: " service
systemctl start $service
echo "$service başlatıldı."
;;
"Çıkış")
break
;;
*) echo "Geçersiz seçenek";;
esac
done

Bu script, kullanıcıların hızlıca kullanıcı eklemesine veya servis başlatmasına olanak tanır.

Sonuç

Ansible ve Bash betikleri, modern IT altyapısının yönetimi için güçlü araçlardır. Ansible, büyük ve karmaşık sistemlerde süreçleri otomatikleştirirken, Bash betikleri daha küçük ve özel görevler için ideal bir çözüm sunar. Her iki araç da esnekliği ve işlevselliği ile sistem yöneticilerinin iş yükünü azaltır. Gelecekte, bu araçların hibrit bulut ortamlarında ve konteyner teknolojilerinde daha fazla kullanılacağı öngörülmektedir. Sistem otomasyonu konusunda kendinizi geliştirmek için Ansible modüllerini ve Bash script yazımını derinlemesine öğrenmek büyük avantaj sağlayacaktır.


Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts