Sistem Yönetimi Görevleri için Ansible Modülleri Nasıl Kullanılır - Bölüm 6
Ansible Serisinin bu Bölüm 6'sında, geçmiş konulardaki birkaç Ansible modülünü ele aldık; şimdi daha derine ineceğiz ve bir dizi sistem yönetimi görevinin yerine getirilmesinde 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.
Bu sayfada:
- Ansible'da Yazılım Paketlerini ve Depolarını Yönetme
- Ansible'ı Kullanarak Hizmetleri Yönetme
- Ansible ile Güvenlik Duvarını Yönetme
- Ansible ile Dosya veya Klasörleri Arşivleme
- Ansible ile Görevleri Planlama
- Kullanıcıları ve Grupları Ansible ile Yönetin
- Ansible ile Dosya ve Dizinler Oluşturun
- Ansible ile Depolamayı Yönetme
- Ansible ile Dosya Sistemlerini Yönetmek
1. Ansible'da Yazılım Paketlerini ve Depoları Yönetme
Linux sistemlere paket kurarken farklı dağıtımlar farklı paket yöneticileriyle birlikte gelir. RedHat dağıtımları için yum & dnf'ye sahibiz, Debian dağıtımları için ise uygun.
Ansible, farklı sistemler için farklı paket yöneticileri kullanma ihtiyacını ortadan kaldıran paket 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 Yükleyin
Örneğin, htop'u hem Debian hem de RedHat dağıtımlarından oluşan bir anasistem grubuna yüklemek için paket modülünü şu şekilde kullanın: aşağıdaki install_htop.yml başucu kitabında gösterilmektedir.
---
- 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 var ve Debian/Ubuntu sistemleri için Apache2 var ve bunların tümü Apache'yi ifade ediyor Web sunucusu. Bu nedenle bu paketleri geçirirken ekstra dikkatli olunmalıdır. Genellikle değişkenleri veya koşullu ifadeleri kullanmak en iyisidir.
2. Ansible'ı Kullanarak Hizmetleri Yönetme
Daha sonra, Linux sistemlerindeki hizmetleri yönetmek için kullanılan bir hizmet modülümüz var. Bir hizmeti başlatmak, durdurmak veya yeniden başlatmak için kullanılır. Bunu ayrıca bir hizmeti etkinleştirmek için de kullanabilirsiniz; böylece sistem önyüklendiğinde hizmeti otomatik olarak başlatır.
Bir Hizmeti Başlatın ve Etkinleştirin
Örneğin, RHEL 8'de Apache web sunucusunu başlatmak ve etkinleştirmek için hizmeti 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 durduruldu ö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ıldı özelliğini iletin.
---
- name: Restart httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: restarted
3. Güvenlik Duvarını Ansible ile Yönetmek
Sistem yöneticilerinin üstlendiği bir diğer önemli görev ise güvenlik duvarının yönetimidir. Ansible playbook'larında bu, firewalld ve ufw modülleriyle çok daha kolay hale getirildi. Güvenlik duvarını bir bağlantı noktasına veya hizmete, hatta bir kaynak adresine izin verecek veya engelleyecek şekilde yapılandırabilirsiniz.
Hemen içeri girelim ve birkaç örneğe bakalım:
Firewalld'da Bağlantı Noktası 80'i açın/engelleyin
---
- name: Allow port 80
hosts: webservers
tasks:
-firewalld:
port: 80/tcp
permanent: yes
state: enabled
Yukarıdaki başucu kitabında, güvenlik duvarı üzerinden 80 numaralı bağlantı noktasına izin veriliyor.
kalıcı: evet
seçeneği, güvenlik duvarı kuralını uygular ve yeniden başlatmalarda kalıcı olmasını sağlar. Ancak bu kural hemen geçerli değildir. Yalnızca yeniden başlatmanın ardından etkili olur. Kuralı hemen uygulamak için hemen: evet
seçeneğini kullanın.
İzin verilen adresleri belirtmek için source:0.0.0.0/0 ifadesini kullanın.
- firewalld:
source: 192.168.0.0/24
zone: public
state: enabled
Bağlantı noktası seçeneğini kullanmasına izin verilecek bağlantı noktası aralığını aşağıdaki şekilde 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
Firewalld'da Hizmet Ekle/Engelle
Bağlantı noktası eklemenin/engellemenin yanı sıra aynı kuralları bir hizmete de uygulayabilirsiniz. Ve oldukça basit. Yalnızca hizmet modülünü kullanın ve eklenecek hizmeti 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. Ansible ile Dosya veya Klasörleri Arşivlemek
Arşivleme, bir dosya veya klasörün kolayca taşınabilir ve boyutu daha küçük bir formatta sıkıştırılması anlamına gelir. Ansible, arşiv adı verilen bir modülle birlikte gelir. Bir dosyayı sıkıştırmak olabildiğince kolaydır. Gereken tek şey, dosyanın kaynak yolunu ve sıkıştırılmış dosyanın hedefini belirtmektir.
Bir Dizini Sıkıştır
Aşağıdaki compress.yml başucu kitabını düşünün.
---
- hosts: webservers
tasks:
• name: Compress a folder
archive:
path: /opt/data/web
dest: /tmp/web.gz
Yukarıdaki başucu kitabı /opt/data/web dizinini sıkıştırır ve onu /tmp/web.gz dosyasına kaydeder.
Bir Dizini Formatla Sıkıştır
Varsayılan sıkıştırma formatı .gz
'dir ancak bu, format niteliği kullanılarak belirtilebilir. Bir sonraki Başucu Kitabı'nı örnekleyin.
---
- hosts: webservers
Tasks:
- name: Create a zip archive
archive:
path: /opt/data/web
dest: /tmp/web
format: zip
Yukarıdaki başucu kitabı /opt/data/web dizinini /tmp/web.zip dosyasına sıkıştırır.
Sıkıştırılmış Dosyayı Açma
Sıkıştırılmış bir dosyayı arşivden çıkar özelliğini kullanarak da açabilirsiniz. Aşağıdaki başucu kitabını düşünün.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.gz to/opt directory on Ansible controller
unarchive:
src: /tmp/web.bz2
dest: /opt/
Yukarıdaki başucu kitabı, Ansible denetleyicisindeki /opt/data/web.gz dosyasını /opt olarak sıkıştırır.
Uzak Düğümde Sıkıştırılmış 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 oynatma kitabı, uzak düğümdeki /tmp/web.bz2 dosyasını /opt/ dizinine açar.
5. Ansible ile Görevleri Planlayın
Cron modülü, Ansible Playbooks'ta işlerin planlanmasına yardımcı olur.
Zamanlanmış Görev Oluşturma
Aşağıdaki başucu kitabını düşünün.
---
- 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
Başucu kitabı, katılım senaryosunu 5 Nisan'da saat 17:00'de çalıştırıyor.
Belirli Bir Tarihe Bir Komut Dosyası Planlayın
Bu komut dosyasını yalnızca Nisan ayının 5. günü Pazartesi ise çalışacak şekilde planlamak istiyorsanız hafta içi: 1 özelliğini kullanın. Cron notasyonuna göre 0 Pazar'ı, 6 ise Cumartesi'yi ifade eder.
month: 4
day: 5
hour: 17
minute: 00
weekday: 1
Bu alanların herhangi birindeki yıldız işareti (*) herhangi bir değeri belirtir.
Bir İşi Belirli Bir Tarihte Çalıştırma
İşi 5 Nisan'da saat 17:00'de çalıştırmak için hafta içi gün ne olursa olsun, gösterilen zaman parametrelerini kullanın.
month: 4
day: 5
hour: 17
minute: 00
weekday: *
Her Ayın Belirli Bir Gününde Bir İş Yürütün
Cron işini her ayın 5. günü saat 17:00'de gerçekleştirmek için aşağıdaki ayarları kullanın.
month: *
day: 5
hour: 17
minute: 00
weekday: *
Bir İşi Günlük Olarak Yürütün
Cron işini her gün saat 17:00'de yürütmek için zaman ayarlarını gösterildiği gibi yapın:
month: *
day: *
hour: 17
minute: 00
weekday: *
Her 5 Saatte Bir İş Yürüt
Cron işini her 5 saatte bir yürütmek için gösterildiği gibi */5
adım değerini kullanın.
month: *
day: *
hour: */5
minute: *
weekday: *
6. Kullanıcıları ve Grupları Ansible ile Yönetin
Ansible playbook'larındaki kullanıcıları ve grupları da oldukça zahmetsizce yönetebilirsiniz.
Yeni Kullanıcı Oluştur
Yeni bir kullanıcı oluşturmak için kullanıcı modülünü gösterildiği gibi kullanın.
---
- hosts: webservers
tasks:
- name: Create a new user
user:
name: Jack
Ayrıca 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
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ştur
Yeni bir grup oluşturmak için grup modülünü kullanın.
- name: Create a group
group:
name: developers
7. Ansible ile Dosya ve Dizinler Oluşturun
Dizin dosyaları oluşturmak için dosya modülünü kullanın.
Yeni Dizin Oluştur
Ö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 özellikleri ekleyebilirsiniz.
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/web
state: directory
owner: www-data
group: www-data
mode: 0644
Ayrıca 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ştur
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önetmek
lvg modülü, LVM birimlerini ve gruplarını yapılandırmak için kullanılır.
LVM Birim Grubu Oluşturma
Aşağıdaki başucu kitabını düşünün:
---
- 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 fiziksel boyut boyutu 32 MB olan bir birim grubu oluşturur.
Oluşturulduktan sonra gösterildiği gibi mantıksal hacim oluşturmak için lvol modülünü kullanın
Mantıksal Birim Oluşturun
---
- hosts: webservers
tasks:
- name: Create lVM volume
lvol:
vg: vg1
lv: lvol1
pvs: /dev/sda1
9. Dosya Sistemlerini Ansible ile Yönetmek
Blok cihazda dosya sistemi oluşturmak için dosya sistemi modülünü kullanın.
Dosya Sistemi Oluşturun
Aşağıdaki başucu 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
Dosya Sistemini Bağlayın
Daha sonra aşağıdaki başucu kitabında gösterildiği gibi bağlama modülünü kullanarak blok birimini bağlamaya devam edebilirsiniz:
---
- hosts: webservers
tasks:
- name: Mount a filesystem
mount:
fstype: xfs
src: /dev/vg1/lvol1
path: /opt/web
state: mounted
Çözüm
Bu konuyu sonuçlandırıyor. Ansible Playbooks'taki belirli yerleşik modüller tarafından gerçekleştirilebilecek çeşitli sistem yönetimi görevlerini ele aldık.