Ansible nedir ?
Ansible, yapılandırma yönetimi, dağıtım ve otomasyon için kullanılan bir açık kaynaklı yazılım aracıdır. Sunucuları, ağ cihazlarını, bulut hizmetlerini ve diğer sistemleri yapılandırmak ve yönetmek için kullanılabilir. Ansible, YAML tabanlı bir dil kullanarak basit ve okunabilir senaryolar oluşturmanıza olanak tanır.
Ansible'ı kullanarak bir web sunucusunu yapılandırmak için detaylı bir örnek:
Adım 1: Ansible Kurulumu
Ansible'ı çalıştırmak için, kontrol ettiğiniz makinede (örneğin, kişisel bilgisayarınızda veya bir sunucuda) Ansible'ı yüklemeniz gerekir. Genellikle bir Python paketi olarak yüklenir:
pip install ansible
Adım 2: İnventory (Envanter) Oluşturma
Ansible'ın yöneteceği hedef makinelerin IP adreslerini veya isimlerini içeren bir envanter dosyası oluşturmanız gerekmektedir. Örneğin, inventory.ini adında bir dosya oluşturabilirsiniz:
[servers]
webserver ansible_host=192.168.1.100
Adım 3: YAML Playbook Oluşturma
Ansible, YAML tabanlı playbook'lar aracılığıyla işleri gerçekleştirir. Bir playbook, hedef makinelerde çalıştırılacak görevleri tanımlar. Örneğin, webserver.yml adında bir playbook oluşturalım:
---
- name: Web Sunucusu Kurulumu
hosts: servers
become: yes
tasks:
- name: Apache HTTP Sunucusu Kurulumu
apt:
name: apache2
state: present
- name: Apache hizmetinin başlatılması
service:
name: apache2
state: started
enabled: yes
- name: Basit HTML sayfasının oluşturulması
copy:
content: "<html><body><h1>Merhaba, Dünya!</h1></body></html>"
dest: /var/www/html/index.html
Bu playbook, servers grubundaki tüm makinelerde Apache HTTP Sunucusunu kuracak ve basit bir HTML sayfasını yayınlayacaktır.
Adım 4: Playbook'un Çalıştırılması
Artık playbook'u çalıştırabiliriz:
ansible-playbook -i inventory.ini webserver.yml
Bu komut, inventory.ini dosyasındaki sunuculara playbook'u uygular.
Bu örnekte, bir web sunucusu yapılandırmak için basit bir Ansible playbook'u oluşturduk ve çalıştırdık.
Ansible'ı CI/CD (Continuous Integration/Continuous Deployment) süreçlerinde kullanarak yazılım geliştirme ve dağıtım süreçlerini otomatikleştirmek oldukça yaygın. Aşağıda bir CI/CD pipeline'ı oluşturmak için detaylı bir örnek yapalım:
LinkedIn tarafından öneriliyor
Adım 1: Depo Yapısını Oluşturma
Projeniz için bir Git depo oluşturun ve aşağıdaki gibi bir dizin yapısı oluşturun:
my_project/
├── ansible/
│ └── playbook.yml
├── app/
│ └── (Uygulama dosyaları)
└── .gitlab-ci.yml
Adım 2: Ansible Playbook Oluşturma
Projeyi dağıtmak için bir Ansible playbook'u oluşturun. Örneğin, playbook.yml adında bir dosya oluşturun:
---
- name: Proje Dağıtımı
hosts: servers
become: yes
tasks:
- name: Uygulama sunucusunda güncelleme yap
git:
repo: <uygulama_github_repo_url>
dest: /path/to/app
version: main
update: yes
notify:
- Restart Uygulama
handlers:
- name: Restart Uygulama
service:
name: uygulama_servis
state: restarted
Bu playbook, uygulama sunucusunda belirli bir GitHub deposundan kodu çeker, uygulamayı günceller ve ardından uygulama servisini yeniden başlatır.
Adım 3: CI/CD Pipeline Konfigürasyonu (GitLab CI/CD)
.gitlab-ci.yml dosyasını oluşturun:
stages:
- deploy
deploy:
stage: deploy
script:
- ansible-playbook -i ansible/inventory.ini ansible/playbook.yml
tags:
- deploy
Bu GitLab CI/CD konfigürasyonu, deploy adında bir aşama oluşturur ve bu aşamada Ansible playbook'unu çalıştırır.
Adım 4: Sunucu İnventory'sinin Oluşturulması
inventory.ini dosyasını oluşturun:
[servers]
webserver ansible_host=your_server_ip
Adım 5: Ansible ve GitLab CI/CD'nin Yapılandırılması
Ansible'ın yüklü olduğundan ve CI/CD pipeline'ınızın GitLab'da etkinleştirildiğinden emin olun.
Adım 6: Değişikliklerinizi Commit ve Push Edin
Projeye yapılan her değişiklik, GitLab CI/CD pipeline'ını tetikler ve Ansible playbook'u çalıştırılarak uygulamanın sunucuya dağıtılmasını sağlar.