Ansible, otomasyon ve yapılandırma yönetimi için kullanılan açık kaynaklı bir yazılımdır. Ansible, kurulum, yapılandırma ve dağıtım işlemlerini kolaylaştırmak için tasarlanmıştır. Bu makalede, ansible kullanım örnekleri ele alınacak.
Ansible, betik veya programlama diline ihtiyaç duymadan sunucu yapılandırmasını otomatikleştirmek için kullanılabilir. Ansible, birçok platformda çalışabilen çoklu bağlantı noktalarına sahip istemci/sunucu mimarisine sahiptir. Bu makalede, ansible kullanarak yapılandırma dosyalarının nasıl oluşturulacağı ve uygulanacağı ele alınacaktır.
Adım 1: Ansible Kurulumu
Ansible‘ın en son sürümünü resmi web sitesinden indirebilirsiniz.
Ansible İndir : https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
Ubuntu’da, Ansible’ı şu komutla yükleyebilirsiniz:
sudo apt-get install ansible
Adım 2: Host Ekleme
Hostlar, ansible ile yönetilen hedeflerdir. Ansible’ın yöneteceği tüm hostları /etc/ansible/hosts dosyasında tanımlamanız gerekir. Host ekleme işlemi şu şekilde yapılabilir:
[webservers]
webserver1.example.com
webserver2.example.com
[databases]
dbserver1.example.com dbserver2.example.com
Bu dosya, webservers ve databases adında iki grup içeren dört farklı sunucu tanımlar.
Adım 3: Yapılandırma Dosyası Oluşturma
Ansible, yapılandırma dosyaları olarak adlandırılan YAML dosyalarını kullanır. Bu dosyalar, hedef hostlarda ayarlanacak yapılandırmaları belirtir. Bir yapılandırma dosyası örneği aşağıdaki gibidir:
- hosts: webservers
tasks:
- name: Install Nginx
sudo: yes
apt: pkg=nginx state=installed update_cache=yes
Bu YAML dosyası, “webservers” grubundaki tüm hostlara Nginx’in yüklenmesini sağlar.
Adım 4: Yapılandırma Dosyasını Uygulama
Yapılandırma dosyasını uygulamak için, ansible-playbook komutunu kullanmalısınız. Aşağıdaki komut, “webserver1.example.com” sunucusuna Nginx kurulumunu yapacaktır:
ansible-playbook nginx.yml --limit=webserver1.example.com
Adım 5: Rol Oluşturma
Ansible’da, ortak görevleri bir rol halinde gruplayabilirsiniz. Bir rol, bir yapılandırma dosyası koleksiyonudur ve genellikle belirli bir amaca hizmet eder. Her rol, vars/main.yml, handlers/main.yml ve tasks/main.yml gibi üç standart dosya içerir. Rol örneği aşağıdaki gibidir:
roles/
common/
tasks/
main.yml
handlers/
main.yml
vars/
main.yml
files/
httpd.conf
Bu yapılandırma, “common” rolünü tanımlar. Bu rol, sunucular arasındaki ortak yapılandırmaları belirtir.
Adım 6: Role Uygulama
Rolü uygulamak için, yapılandırma dosyasında rolü belirtmeniz yeterlidir. Aşağıdaki örnekte “common” rolü kullanılıyor:
- hosts: webservers
roles:
- common
Adım 7: Modüller
Ansible, bazı yaygın görevleri yerine getirmek için modüller içerir. Bu modüller, örneğin paket yönetimi, dosya kopyalama, kullanıcı yönetimi vb. görevleri yerine getirebilir. Ansible’ın resmi web sitesinde birçok modülün listesi mevcuttur.
Ansible Playbook Örnekleri: Adım Adım Yönergeler
Ansible, yazılım otomasyonu için kullanılan popüler bir açık kaynaklı araçtır. Ansible Playbook’lar, yinelenen işlemleri otomatikleştirmek için kullanılabilir. Bu makalede, Ansible playbook örnekleri hakkında ayrıntılı bilgi edineceksiniz. Ayrıca, bu örnekleri takip ederek kendi playbook’larınızı oluşturabilirsiniz.
2. Ansible Playbook Temel Yapısı
Ansible Playbook‘ların temel yapısı, YAML dosyası biçimindedir. Her playbook, en azından bir adet task (görev) içermelidir. Aşağıda, bir playbook’un temel yapısını görebilirsiniz:
---
- name: Playbook Adı
hosts: hostname
become: yes
vars:
variable_name: value
tasks:
- name: Görev Adı
command: Komut
3. Ansible Playbook Örnekleri
3.1 Dosya Kopyalama
Bu playbook örneği, belirtilen dosyayı remote sunucuya kopyalar.
---
- name: Dosya Kopyalama
hosts: webserver
become: yes
tasks:
- name: Dosya Kopyala
copy:
src: /path/to/local/file
dest: /path/to/remote/directory/
3.2 Servis Durumu
Bu playbook örneği, belirtilen servisin durumunu kontrol eder.
---
- name: Servis Durumu
hosts: webserver
become: yes
tasks:
- name: Servis Kontrol Et
systemd:
name: service_name
state: status
3.3 Paket Yükleme
Bu playbook örneği, belirtilen paketi remote sunucuya kurar.
---
- name: Paket Yükleme
hosts: webserver
become: yes
tasks:
- name: Paket Kur
apt:
name: package_name
state: present
3.4 Şablon Oluşturma
Bu playbook örneği, belirtilen şablona dayalı olarak bir dosya oluşturur.
---
- name: Şablon Oluşturma
hosts: webserver
become: yes
tasks:
- name: Şablon Oluştur
template:
src: /path/to/template/file.j2
dest: /path/to/remote/directory/file.txt
4. Ansible Playbook Uygulama
Yukarıdaki örneklerden herhangi birini kendi ihtiyaçlarınıza göre uyarlayarak kendi playbook’larınızı oluşturabilirsiniz. Ayrıca, birden fazla görevi içeren playbook’lar da oluşturabilirsiniz.
Ansible Playbook Detayına İnelim:
2. Ansible Playbook Nedir?
Ansible Playbook, Ansible için yazılmış otomatikleştirilmiş işlemlerin listesidir. YAML biçiminde yazılırlar ve belirli bir amaç için tasarlanırlar. Bir playbook, birden fazla görevi içerebilir ve her görev, belirli bir sunucuda gerçekleştirilir. Playbook’lar, birden fazla sunucuyu da yönetebilir.
3. Ansible Playbook Örnekleri
3.1 Apache Kurulumu
Bu playbook örneği, Apache web sunucusunu yükler ve yapılandırır.
---
- name: Apache Kurulumu
hosts: webservers
become: yes
tasks:
- name: Apache Paketini Yükle
apt:
name: apache2
state: present
3.2 PostgreSQL Kurulumu
Bu playbook örneği, PostgreSQL veritabanı sunucusunu kurar ve yapılandırır.
---
- name: PostgreSQL Kurulumu
hosts: databaseservers
become: yes
tasks:
- name: PostgreSQL Paketini Yükle
apt:
name: postgresql
state: present
3.3 Firewall Ayarları
Bu playbook örneği, sunucu güvenliğini artırmak için bir güvenlik duvarı kurar ve yapılandırır.
---
- name: Güvenlik Duvarı Kurulumu
hosts: all
become: yes
tasks:
- name: Ufw Paketini Yükle
apt:
name: ufw
state: present
- name: Güvenlik Duvarını Aç
ufw:
rule: allow
port: 80
- name: Güvenlik Duvarını Kaydet
ufw:
state: enabled
3.4 SSH Anahtarları Yönetimi
Bu playbook örneği, sunuculardaki SSH anahtarlarının yönetimini yapar.
---
- name: SSH Anahtarları Yönetimi
hosts: all
become: yes
tasks:
- name: SSH Anahtarını Ekle
authorized_key:
user: username
key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7oFwYhUjJElH8IvR6Az5NyQ... "
3.5 Servis Kontrolü
Bu playbook örneği, belirtilen servisin durumunu ve konfigürasyon dosyalarını kontrol eder.
---
- name: Servis Kontrolü
hosts: webservers
become: yes
tasks:
- name: Apache Durumunu Kontrol Et
systemd:
name: apache2
state: status
- name: Apache Konfigürasyon Dosyasını Kontrol Et
stat:
path: /etc/apache2/httpd.conf
3.6 NGINX Kurulumu
Bu playbook örneği, NGINX web sunucusunu yükler ve yapılandırır.
---
- name: NGINX Kurulumu
hosts: webservers
become: yes
tasks:
- name: NGINX Paketini Yükle
apt:
name: nginx
state: present
3.7 Yedekleme
Bu playbook örneği, sunucularda bulunan dosyaların yedeklenmesini yapar ve belirli bir konuma kaydeder.
---
- name: Yedekleme
hosts: all
become: yes
vars:
backup_dir: "/backup"
tasks:
- name: Yedekleme Klasörünü Oluştur
file:
path: "{{ backup_dir }}"
state: directory
- name: Dosya Yedekleme
archive:
path: "/var/log"
dest: "{{ backup_dir }}/log.tar.gz"
Ansible Playbook’lar, yapılandırma yönetiminde büyük bir kolaylık sağlar. Bu makalede, Ansible Playbook kullanarak bazı temel görevleri nasıl otomatikleştirebileceğinizi öğrendiniz. Umarız bu örnekler, sizin de benzer projelerinizde işinize yarar.
ANSIBLE PLAYBOOK VE ORNEK KULLANIM SIKÇA SORULAN SORULAR
Ansible nedir ve ne işe yarar?
Ansible, açık kaynaklı bir otomasyon aracıdır ve sunucuların yapılandırması, yönetimi ve dağıtımı için kullanılır.
Ansible ile neler yapılabilir?
Ansible, sunucu yapılandırması, yazılım dağıtımı, sistem güncellemeleri ve kullanıcı hesapları gibi birçok görevi otomatikleştirebilir.
Ansible Playbook nedir?
Ansible Playbook, bir YAML dosyasıdır ve sunucuların yönetimini otomatikleştirmek için kullanılır. Playbook, sunucuların durumunu tanımlayan adımların bir listesidir.
Ansible ile başka hangi araçlar entegre edilebilir?
Ansible, Puppet, Chef ve SaltStack gibi diğer yapılandırma yönetimi araçlarıyla entegre edilebilir. Ayrıca, AWS, Google Cloud Platform ve Microsoft Azure gibi bulut hizmetleriyle de entegre olabilir.