Ansible Serisinin 6. Bölümünde, şimdi daha derine ineceğiz ve bir dizi sistem yönetimi görevini gerçekleştirmede yardımcı olan ek modülleri keşfedeceğiz.
Her modül hakkında temel bir fikir edinecek ve belirli görevleri gerçekleştirmek için mevcut seçeneklere bakacaksınız.
1. Ansible’da Yazılım Paketlerini ve Havuzları Yönetme
Linux sistemlerde paket kurarken farklı dağıtımlar ile farklı paket yöneticileri gelmektedir. RedHat dağıtımları için yum & dnf kullanılmaktadır, Debian ve benzerleri için ise apt kullanılır.
Ansible, farklı sistemler için farklı paket yöneticileri kullanma ihtiyacını ortadan kaldıran package adı verilen bir modülle birlikte gelir. Ana sistemin ilgili paket yöneticisini otomatik olarak kullanır ve böylece işi kolaylaştırır.
Yazılım Paketlerini Kurma
Örneğin, hem Debian hem de RedHat dağıtımlarını içeren bir bilgisayar grubuna htop yüklemek için aşağıdaki install_htop.yml çalışma kitabında gösterilen paket modülünü kullanın.
---
- name: Install htop on Ubuntu and CentOS
hosts: all
tasks:
- package:
name: htop
state: installed

NOT: Paket adları bir işletim sisteminden diğerine farklılık gösterebilir. Örneğin, Redhat dağıtımlarında httpd ve Debian/Ubuntu sistemlerinde Apache2, Apache web sunucusunu belirtir. Bu nedenle, bu paketleri geçerken ekstra dikkatli olunmalıdır. Genellikle değişkenleri veya koşullu ifadeleri kullanmak en iyisidir.
2. Servisleri Ansible Kullanarak Yönetme
Ardından, Linux sistemlerindeki servisleri yönetmek için kullanılan bir service modülümüz var. Bir hizmeti başlatmak, durdurmak veya yeniden başlatmak için kullanılır. Bir hizmeti etkinleştirmek için de kullanabilirsiniz, böylece bir sistem önyüklendiğinde hizmeti otomatik olarak başlatır.
Bir Hizmeti Başlatma ve Etkinleştirme
Örneğin, RHEL 8’de Apache web sunucusunu başlatmak ve etkinleştirmek için, service’i gösterildiği gibi kullanın.
---
- name: Start and enable httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: started
enabled: yes

Bir Hizmeti Durdurma
httpd hizmetini durdurmak için, stop özelliğini iletin.
---
- name: Stop httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: stopped

Bir Hizmeti Yeniden Başlatın
httpd hizmetini yeniden başlatmak için yeniden başlatılan özniteliği iletin.
---
- name: Restart httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: restarted

3. Managing Firewall with Ansible
Sistem yöneticilerinin üstlendiği bir diğer önemli görev de güvenlik duvarının yönetimidir. Ansible oyun kitaplarında, güvenlik duvarı ve ufw modülleri ile bu çok daha kolay hale getirildi. Güvenlik duvarını bir bağlantı noktasına veya hizmete ve hatta bir kaynak adresine izin verecek veya bunları engelleyecek şekilde yapılandırabilirsiniz.
Hemen konuya geçelim ve birkaç örneğe bakalım:
Güvenlik duvarında Port 80’i açma/engelleme
---
- name: Allow port 80
hosts: webservers
tasks:
-firewalld:
port: 80/tcp
permanent: yes
state: enabled
Yukarıdaki çalışma kitabında, güvenlik duvarında 80 numaralı bağlantı noktasına izin verilir.
Permanent: yes seçeneği, güvenlik duvarı kuralını uygular ve yeniden başlatmalarda kalıcı olmasını sağlar. Ancak bu kural hemen uygulanmaz. Yalnızca yeniden başlatmanın ardından yürürlüğe girer. Kuralı hemen uygulamak için hemen seçeneğini immediate: yes
İzin verilen adresleri belirtmek için source:0.0.0.0/0 deyimini kullanın.
- firewalld:
source: 192.168.0.0/24
zone: public
state: enabled
Bağlantı noktası seçeneğinin kullanılmasına izin verilecek bağlantı noktası aralığını aşağıdaki gibi belirtmek için:
- firewalld:
port: 213-567/udp
permanent: yes
state: enabled
Bağlantı noktasını engellemek için durum seçeneğini gösterildiği gibi devre dışı olarak değiştirin:
-firewalld:
port: 80/tcp
permanent: yes
state: disabled
Güvenlik duvarında Hizmet Ekleme/Engelleme
Bir bağlantı noktası ekleme/engelleme dışında, aynı kuralları bir hizmete de uygulayabilirsiniz. Servis modülünü kullanın ve eklenecek servisi ekleyin ve durum seçeneğinin etkin olarak ayarlandığından emin olun.
- firewalld:
service: https
permanent: true
state: enabled
Hizmeti engellemek için durum seçeneğini devre dışı olarak ayarlayın.
- firewalld:
service: https
permanent: true
state: disabled
4. Dosyaları veya Klasörleri Ansible ile Arşivleme
Arşivleme, bir dosya veya klasörün kolayca taşınabilir ve boyut olarak daha küçük bir biçime sıkıştırılması anlamına gelir. Ansible, archive adı verilen bir modülle birlikte gelir. Tek gereken, dosyanın kaynak yolunu ve sıkıştırılmış dosyanın hedefini belirtmektir.
Bir Dizini Sıkıştırma
Aşağıda archive.yml isimli örneği inceleyin.
---
- hosts: webservers
tasks:
• name: Compress a folder
archive:
path: /opt/data/web
dest: /tmp/web.gz
Yukarıdaki çalışma kitabı /opt/data/web dizinini sıkıştırır ve /tmp/web.gz dosyasına kaydeder.

Bir Dizini İstenilen Formatla Sıkıştırma
Varsayılan sıkıştırma formatı .gz’dir, ancak bu, format parametresi kullanılarak değiştirilebilir. Aşağıdaki çalışma kitabını inceleyin.
---
- hosts: webservers
Tasks:
- name: Create a zip archive
archive:
path: /opt/data/web
dest: /tmp/web
format: zip
Yukarıdaki çalışma kitabı /opt/data/web dizinini /tmp/web.zip olarak sıkıştırır.
Bir Dosyayı Açma
Unarchive parametresini kullanarak sıkıştırılmış bir dosyayı da açabilirsiniz. Aşağıdaki çalışma kitabını inceleyin.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.gz to/opt directory on Ansible controller
unarchive:
src: /tmp/web.bz2
dest: /opt/
Yukarıdaki çalışma kitabı /opt/data/web.gz dosyasını Ansible denetleyicisinde /opt olarak açar.
Uzak Bilgisayardaki Bir Dosyayı Açma
Uzak kaynak sistemini belirtmek için remote_src=yes seçeneğini kullanın.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.bz2 to/opt on remote host
unarchive:
src: /tmp/web.bz2
dest: /opt/
remote_src=yes
Yukarıdaki çalışma kitabı, uzak düğümdeki /tmp/web.bz2 dosyasını /opt/ dizinine açar.
5. Ansible ile Görevleri Planlama
Cron modülü, Ansible Playbooks’ta işlerin planlanmasına yardımcı olur.
Zamanlanmış Görev Oluşturma
Aşağıdaki çalışma kitabını inceleyin.
---
- hosts: webservers
tasks:
- name: Create a scheduled task
cron:
name: Run employee attendance
job: sh /opt/scripts/attendace.sh
month: 4
day: 5
hour: 17
minute: 00
Çalışma kitabı, komut dosyasını 5 Nisan’da saat 17:00’de çalıştırır.
Belirli Bir Tarihte Komut Dosyası Planlama
Bu komut dosyasını yalnızca Nisan ayının 5. günü Pazartesi olduğunda çalışacak şekilde programlamak istiyorsanız, hafta içi gün: 1 niteliğini kullanın. 0, Pazar’ı ve 6, cron notasyonuna göre Cumartesi’yi belirtir.
month: 4 day: 5 hour: 17 minute: 00 weekday: 1
Bu alanların herhangi birindeki yıldız işareti (*), herhangi bir değeri gösterir.
Belirli Bir Tarihte Bir Görev Çalıştırma
İşi hafta içi gün ne olursa olsun 5 Nisan’da 17:00’de çalıştırmak için gösterilen zaman parametrelerini kullanın.
month: 4 day: 5 hour: 17 minute: 00 weekday: *
Her Ay Belirli Bir Günde Bir İşi Çalıştırma
Her ayın 5. günü saat 17:00’de cron işini yürütmek için aşağıdaki ayarları kullanın.
month: * day: 5 hour: 17 minute: 00 weekday: *
Günlük Bir Görev Çalıştırma
Cron işini her gün saat 17:00’de yürütmek için saat ayarlarını gösterildiği gibi yapın:
month: * day: * hour: 17 minute: 00 weekday: *
Görevi Her 5 Saatte Bir Çalıştırma
Her 5 saatte bir cron işini yürütmek için, gösterildiği gibi */5 adım değerini kullanın.
month: * day: * hour: */5 minute: * weekday: *
6. Ansible ile Kullanıcıları ve Grupları Yönetme
Ansible ile kullanıcıları ve grupları da oldukça zahmetsizce yönetebilirsiniz.
Yeni Kullanıcı Oluşturma
Yeni bir kullanıcı oluşturmak için user modülünü gösterildiği gibi kullanın.
---
- hosts: webservers
tasks:
- name: Create a new user
user:
name: Jack
UID, gruplar gibi ek seçenekler de ekleyebilirsiniz.
- name: Create a new user
user:
name: Jack
comment: Jack Peters
uid: 1002
group: administrators
shell: /bin/bash
Bir Kullanıcıyı Kaldırma
Kullanıcıyı kaldırmak için remove: yes ifadesini kullanın.
- name: Remove the user 'Jack'
user:
name: Jack
state: absent
remove: yes
Yeni Grup Oluşturma
Yeni bir grup oluşturmak için group modülünü kullanın.
- name: Create a group
group:
name: developers
7. Ansible ile Dosyalar ve Dizinler Oluşturma
Dizin dosyaları oluşturmak için file modülünü kullanın.
Yeni Bir Dizin Oluşturma
Örneğin, yeni bir dizin oluşturmak için.
---
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/app
state: directory
Sahip, grup ve dosya izinleri gibi diğer öznitelikleri ekleyebilirsiniz.
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/web
state: directory
owner: www-data
group: www-data
mode: 0644
Ek olarak, recurse: yes ifadesini kullanarak yinelemeli olarak dizinler oluşturabilirsiniz.
---
- hosts: webservers
tasks:
- name: Create directories recursively
file:
path: /opt/web/app
state: directory
owner: www-data
group: www-data
mode: 0644
recurse: yes
Dosya Oluşturma
Bir dosya oluşturmak için state: touch seçeneğini kullanın.
---
- hosts: webservers
tasks:
- name: Create a new file
file:
path: /opt/web/index.html
state: touch
owner: www-data
group: www-data
mode: 0644
8. Ansible ile Depolamayı Yönetme
lvg modülü, LVM hacimlerini ve gruplarını yapılandırmak için kullanılır.
Bir LVM Hacim Grubu Oluşturun
Aşağıdaki çalışma kitabını inceleyin:
---
- hosts: webservers
tasks:
• name: Create lVM volume group
lvg:
vg: vg1
pvs: /dev/sda1
pesize: 32
Bu, /dev/sda1 bölümünün üzerinde 32 MB fiziksel boyuta sahip bir birim grubu oluşturur.
Oluşturulduktan sonra, gösterildiği gibi mantıksal bir birim oluşturmak için lvol modülünü kullanın.
Mantıksal Birim Oluşturma
---
- hosts: webservers
tasks:
- name: Create lVM volume
lvol:
vg: vg1
lv: lvol1
pvs: /dev/sda1
9. Ansible ile Dosya Sistemlerini Yönetme
Bir blok cihazda dosya sistemi oluşturmak için filesystem modülünü kullanın.
Bir Dosya Sistemi Oluşturma
Aşağıdaki çalışma kitabı, blok biriminde xfs dosya sistemi türünü oluşturur.
---
- hosts: webservers
tasks:
- name: Create a filesystem
filesystem:
fstype: xfs
dev: /dev/vg1/lvol1
Bir Dosya Sistemi Bağlama
Daha sonra, aşağıdaki çalışma kitabında gösterildiği gibi, mount modülünü kullanarak blok alanı bağlamaya devam edebilirsiniz:
---
- hosts: webservers
tasks:
- name: Mount a filesystem
mount:
fstype: xfs
src: /dev/vg1/lvol1
path: /opt/web
state: mounted
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.