Ansible Playbooks
1. Ansible Playbook Nedir?
Playbook, Ansible’ın temel orkestrasyon dilidir.
YAML formatında yazılır.
İçinde, hangi sunucularda (hosts) hangi işlemlerin (tasks) yapılacağını tanımlarsınız.
Örnek Senaryolar
Tek bir sunucuda
datekomutu çalıştırmakYüzlerce sunucuda paket kurmak, servis başlatmak
Özel script’leri çalıştırmak, disk yapılandırmak, VM’leri otomatik oluşturmak vb.
2. Yapıtaşları: Play → Tasks → Modules
Play
Playbook, aslında bir liste (array) şeklinde yazılır.
Bu listenin her bir elemanına “Play” denir.
Her “Play”, hangi sunuculara işlem yapılacağını (hosts) ve o sunucularda hangi tasks sırasıyla çalıştırılacağını belirtir.
Tasks
Bir Play içindeki “tasks” listesi, adım adım yapılacak eylemleri ifade eder.
Sıralama önemlidir: İlk task biter, ikinci task başlar.
Örnek task’lar: Komut çalıştırma, paket kurma, servis başlatma, script çalıştırma.
Modules
Her “task” bir modül kullanır (
command,yum,service,scriptvb.).Modül, “nasıl yapılacağını” bilen kod parçacığıdır. Örneğin
yummodülüyle paket kurulur,servicemodülüyle servis başlatılır.
3. Basit Bir Örnek Playbook
Aşağıdaki playbook’ta tek bir “play” var, bu play “localhost” üzerinde 4 task çalıştırıyor:
- name: Play 1
hosts: localhost
tasks:
- name: Execute command 'date'
command: date
- name: Execute script on server
script: test_script.sh
- name: Install httpd service
yum:
name: httpd
state: present
- name: Start web server
service:
name: httpd
state: startedPlay’in Adı: “Play 1” (isteğe bağlı bir açıklama).
hosts: localhost: Bütün task’lar “localhost” üzerinde çalışır.
Envanterde “localhost” tanımlıdır.
İsterseniz
hosts: webveyahosts: dbdiyerek gruplar hedefleyebilirsiniz (envanterde tanımlı olmalı).
Tasks:
command: date(sistem tarihi)script: test_script.sh(bir script dosyası çalıştırır)yum:(httpd paketini kurar)service:(httpd servisini başlatır)
Önemli: Task’lar listesinde hangi sırada yazarsanız, o sırada çalışır. Örneğin httpd paketi kurulduktan sonra servis başlatılması mantıklı.
4. Birden Fazla “Play” İçeren Playbook
Bir playbook’ta birden fazla “play” tanımlayarak, farklı aşamalarda farklı sunuculara işlem yaptırabilirsiniz:
- name: Play 1
hosts: localhost
tasks:
- name: Execute command 'date'
command: date
- name: Play 2
hosts: web
tasks:
- name: Install httpd service
yum:
name: httpd
state: present
- name: Start web server
service:
name: httpd
state: startedPlay1 →
hosts: localhost,datekomutuPlay2 →
hosts: web, sunucuyahttpdkurar ve başlatır
Bunlar sırayla çalışır: önce Play1 biter, sonra Play2 başlar.
5. Playbook Nasıl Çalıştırılır?
aansible-playbook playbook.ymlplaybook.yml: Yukarıdaki örnekleri kaydettiğiniz YAML dosyası.Eğer envanter dosyanız (inventory) varsayılan
/etc/ansible/hostsdışında ise,-iparametresiyle belirtmeniz gerekir:ansible-playbook -i my_inventory.ini playbook.ymlDaha fazla seçenek için:
ansible-playbook --help
6. Modüller (Modules) ve Dokümantasyon
Ansible, yüzlerce modül ile gelir (örn. copy, file, lineinfile, shell, apt, yum, service, user vb.).
Bilgi almak için:
ansible-doc -lTüm mevcut modülleri listeler.
ansible-doc <modül_adı>komutuyla belirli modülün kullanımı incelenebilir.
7. Özet
Playbook: Ansible’ın “ne yapılacak, hangi sırayla, hangi sunucularda” sorusuna cevaptır.
YAML formatında yazılır, liste yapısıyla bir veya birden çok “play” içerebilir.
Her Play: “hosts” + bir “tasks” listesi
“tasks” içinde sırasıyla modülleri çağırırsınız (komut, servis, paket kurma vb.).
Çalıştırma:
ansible-playbook playbook.ymlile.
Bu şekilde, Ansible Playbook’ların temel yapısını öğrendiniz. Sonraki adımlarda, farklı modüllerle ve daha gelişmiş özelliklerle (değişkenler, koşullu görevler, loop’lar vb.) playbook’ları zenginleştirip otomasyonunuzu genişletebilirsiniz.
Last updated
Was this helpful?