Blogchevron_rightSunucu Yönetimichevron_rightAnsible ile Sunucu Yapılandırma Otomasyonu Rehberi

Ansible ile Sunucu Yapılandırma Otomasyonu Rehberi

S
Serversium
calendar_today10 Mayıs 2026
schedule5 dk okuma
Ansible ile Sunucu Yapılandırma Otomasyonu Rehberi

Ansible ile Sunucu Yapılandırma Otomasyonu: Manuel İşlemlere Son Verin

Sunucu yönetimi dünyasında manuel işlemler, hem zaman kaybına hem de insan hatalarına neden oluyor. Ansible, IT ekiplerinin sunucu yapılandırma, dağıtım ve yönetim süreçlerini otomatikleştirmelerini sağlayan güçlü bir araçtır. Bu kapsamlı rehberde, Ansible'ın sunucu otomasyonundaki rolünü, kurulum sürecini ve en iyi uygulamaları detaylı olarak inceleyeceğiz.

Ansible Nedir ve Neden Kullanılmalı?

Ansible, Red Hat tarafından geliştirilen, açık kaynaklı bir IT otomasyon ve konfigürasyon yönetimi aracıdır. Agentless (ajanız) yapısı sayesinde, hedef sunuculara herhangi bir yazılım yüklemeden SSH protokolü üzerinden iletişim kurar. Bu özellik, Ansible'ı diğer konfigürasyon yönetim araçlarından ayıran en önemli faktörlerden biridir.

Gartner'ın araştırmalarına göre, kurumsal IT ekipleri zamanlarının %60'ını rutin bakım görevlerine harcamaktadır. Ansible kullanımı bu oranı %80'e varan oranlarda düşürebilir. Ayrıca, manuel yapılandırma hataları nedeniyle yaşanan sistem kesintileri, şirketlere yılda ortalama 1.2 milyon dolara mal olmaktadır.

Ansible'ın Temel Bileşenleri

  • Inventory: Yönetilecek sunucuların listesi ve gruplandırması
  • Playbook: Tanımlanan görevlerin YAML formatında yazıldığı dosyalar
  • Modules: Gerçek işlemleri gerçekleştiren önceden yazılmış kod blokları
  • Roles: Playbook'ların yeniden kullanılabilir bileşenlere organize edilmesi
  • Facts: Hedef sunuculardan toplanan sistem bilgileri
Sunucu güvenliği ve SSH anahtar yönetimi hakkında daha fazla bilgi edinmek için bağlantıyı inceleyebilirsiniz.

Ansible Nasıl Çalışır?

Ansible'ın çalışma prensibi oldukça basittir. Kontrol makinesinden (Ansible kurulu olan sunucu) hedef sunuculara SSH bağlantısı kurulur ve playbook'larda tanımlanan görevler sırayla gerçekleştirilir. Her görev, idempotent (tekrar edilebilir) yapıdadır; yani aynı playbook birden fazla çalıştırıldığında, sistem durumu değişmediyse herhangi bir değişiklik yapmaz.

Örneğin, bir paket yükleme görevi tanımladığınızda, Ansible önce paketin sistemde olup olmadığını kontrol eder. Paket zaten mevcutsa, herhangi bir işlem yapmadan bir sonraki adıma geçer. Bu özellik, playbook'ların güvenli bir şekilde tekrarlanabilmesini sağlar.

Ansible Mimarisi

Ansible, merkezi olmayan (decentralized) bir mimari üzerine kuruludur. Kontrol nodu üzerinde Ansible kuruluysa, herhangi bir ek yazılım gerektirmeden diğer sunucuları yönetebilir. Bu mimari, büyük ölçekli altyapılarda bile kolayca ölçeklenebilir.

İşte Ansible çalışma döngüsü:

  1. Kullanıcı bir playbook çalıştırır
  2. Ansible, inventory dosyasından hedef sunucuları belirler
  3. Her hedef sunucuya SSH bağlantısı kurulur
  4. Modüller临摹 (transferred) edilir ve çalıştırılır
  5. Sonuçlar kontrol noduna raporlanır

Ansible Kurulumu ve Temel Yapılandırma

Ansible'ı kullanmaya başlamak için öncelikle kontrol makinesine kurulum yapmanız gerekir. Aşağıda Ubuntu/Debian sistemlerde kurulum adımları bulunmaktadır:

# Ansible PPA ekleme
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible

# Ansible kurulumu
sudo apt install ansible

# Kurulum doğrulama
ansible --version

Inventory Dosyası Oluşturma

Inventory dosyası, yönetilecek sunucuların listesini içerir. Varsayılan olarak /etc/ansible/hosts konumunda bulunur, ancak proje bazlı özel inventory dosyaları da oluşturulabilir.

# Örnek inventory dosyası
[web-sunuculari]
web1.example.com
web2.example.com
web3.example.com

[veritabani-sunuculari]
db1.example.com
db2.example.com

[prod-sunuculari:children]
web-sunuculari
veritabani-sunuculari

[prod-sunuculari:vars]
ansible_user=root
ansible_python_interpreter=/usr/bin/python3

Ansible Yapılandırma Dosyası

Ansible'ın davranışını özelleştirmek için ansible.cfg dosyası kullanılır. Bu dosya, SSH ayarları, modül yolları, günlük kaydı ve diğer yapılandırma seçeneklerini içerir.

[defaults]
inventory = ./inventory
host_key_checking = False
retry_files_enabled = False
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp/ansible_facts
fact_caching_timeout = 3600

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = True
GitLab kurulumu ile Ansible playbook'larınızı versiyon kontrol altına alabilir ve ekibinizle paylaşabilirsiniz.

Ansible Playbook Yazımı

Playbook'lar, Ansible'ın kalbidir. YAML formatında yazılan bu dosyalar, sunucularda gerçekleştirilecek görevleri tanımlar. Her playbook, bir veya birden fazla "play" içerir ve her play, belirli bir grup sunucuda çalıştırılacak görevleri kapsar.

Temel Playbook Yapısı

---
- name: Web Sunucusu Kurulumu
  hosts: web-sunuculari
  become: yes
  vars:
    http_port: 80
    domain_name: "example.com"
  
  tasks:
    - name: Sistem paketlerini güncelle
      apt:
        update_cache: yes
        cache_valid_time: 3600
    
    - name: Nginx kurulumu
      apt:
        name: nginx
        state: present
    
    - name: Nginx servisini başlat
      service:
        name: nginx
        state: started
        enabled: yes
    
    - name: Firewall yapılandırması
      ufw:
        rule: allow
        port: "{{ http_port }}"
        proto: tcp

Bu playbook, web sunucuları grubundaki tüm sunuculara Nginx kurulumu yapar. become: yes parametresi, görevlerin root yetkisiyle çalıştırılmasını sağlar.

Koşullu Çalıştırma ve Döngüler

Ansible, koşullu ifadeler ve döngüler kullanarak dinamik playbook'lar oluşturmanıza olanak tanır:

---
- name: Kullanıcı oluşturma
  hosts: all
  become: yes
  vars:
    kullanici_listesi:
      - { isim: 'admin', shell: '/bin/bash', sudo: 'yes' }
      - { isim: 'deploy', shell: '/bin/sh', sudo: 'yes' }
      - { isim: 'monitoring', shell: '/bin/false', sudo: 'no' }
  
  tasks:
    - name: "{{ item.isim }} kullanıcısını oluştur"
      user:
        name: "{{ item.isim }}"
        shell: "{{ item.shell }}"
        create_home: yes
      loop: "{{ kullanici_listesi }}"
    
    - name: Sudo yetkisi kontrolü
      lineinfile:
        path: /etc/sudoers
        line: "{{ item.isim }} ALL=(ALL) NOPASSWD: ALL"
        validate: 'visudo -cf %s'
      loop: "{{ kullanici_listesi }}"
      when: item.sudo == 'yes'

Ansible Modülleri

Ansible, farklı görevler için yüzlerce built-in modül sunar. En sık kullanılan modüllerden bazıları:

Paket Yönetimi Modülleri

  • apt: Debian/Ubuntu sistemlerde paket yönetimi
  • yum/dnf: Red Hat/CentOS sistemlerde paket yönetimi
  • package: İşletim sistemine uygun paket yöneticisini otomatik seçer

Dosya ve Dizin Modülleri

  • copy: Dosyaları kontrol makinesinden hedef sunucuya kopyalar
  • template: Jinja2 şablonlarını kullanarak dosya oluşturur
  • file: Dosya ve dizin özniteliklerini yönetir
  • sync: Büyük dosyaları etkili şekilde senkronize eder

Servis Modülleri

  • service: Sistem servislerini yönetir (başlat, durdur, yeniden başlat)
  • systemd: systemd servislerini yönetir
Plesk ve cPanel karşılaştırması hakkında bilgi edinerek, sunucu yönetim paneli seçimlerinizi optimize edebilirsiniz.

Ansible Roles: Yeniden Kullanılabilir Yapılandırmalar

Ansible roles, playbook'ları modüler ve yeniden kullanılabilir hale getiren bir organizasyon yapısıdır. Her role, belirli bir fonksiyon için gerekli tüm dosyaları, şablonları ve görevleri içerir.

Role Yapısı

roles/
  nginx/
    defaults/
      main.yml      # Varsayılan değişkenler
    handlers/
      main.yml      # Handler tanımları
    tasks/
      main.yml      # Ana görevler
    templates/
      nginx.conf.j2 # Şablon dosyaları
    vars/
      main.yml      # Role değişkenleri

Role Kullanımı

---
- name: Tüm sunucularda temel yapılandırma
  hosts: all
  become: yes
  
  roles:
    - common
    - { role: nginx, when: "'web-sunuculari' in group_names" }
    - { role: monitoring, when: "'monitoring' in groups" }

Docker Container Yönetimi ile Ansible

Ansible, Docker konteynerlerini de yönetebilir. Portainer ile Docker konteyner yönetimi konusundaki rehberimizde Docker'ın temellerini öğrenebilirsiniz. Ansible ile Docker entegrasyonu için docker_container ve docker_image modülleri kullanılır:

---
- name: Docker kurulumu ve container yönetimi
  hosts: docker-sunuculari
  become: yes
  
  tasks:
    - name: Docker kurulumu
      apt:
        name:
          - docker.io
          - python3-docker
        state: present
    
    - name: Docker servisi başlat
      service:
        name: docker
        state: started
        enabled: yes
    
    - name: Nginx container çalıştırma
      docker_container:
        name: nginx_web
        image: nginx:latest
        ports:
          - "80:80"
        state: started
        restart_policy: always

Ansible vs Diğer Otomasyon Araçları

Sunucu otomasyonu pazarında Ansible, Puppet, Chef, SaltStack ve Terraform gibi alternatifler bulunmaktadır. İşte temel karşılaştırma:

Özellik Ansible Puppet Chef Terraform
Mimari Agentless Agent-based Agent-based Agentless
Dil YAML DSL Ruby HCL
Öğrenme Eğrisi Düşük Orta Yüksek Orta
Başlangıç Süresi Hızlı Orta Orta Hızlı
İdempotency Varsayılan Varsayılan Manuel Varsayılan
Altyapı Büyüklüğü Orta-Büyük Orta-Büyük Orta-Büyük Her öl

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward