Yeni sistemler arka planda dnf’ye güvense de, Ansible’daki yum modülü geriye dönük uyumluluk sayesinde tam işlevselliğe sahiptir. Uygulamada, Ansible kılavuzları aracılığıyla RPM tabanlı sistemlerde paketleri yönetmek için birincil arayüz olmaya devam etmektedir.
Ansible’da Yum modülüyle yapabileceğiniz bazı olağan paket yönetimlerine bir bakalım.
Paketleri bildirimsel olarak yükleme ve kaldırma
Yum modülünün en yaygın kullanımı, bir sistemde belirli paketlerin mevcut olup olmadığını kontrol etmektir. Yazılımları koşulsuz olarak yükleyen zorunlu kabuk görevlerinin aksine, Ansible modülleri bildirimsel olarak çalışır. Bu, yöneticilerin istenen son durumu belirlediği ve Ansible’ın sistemin bu durumu yansıtmasını sağladığı anlamına gelir.
Bu görev, httpd paketinin yüklendiğini onaylar. Paket zaten yüklüyse, herhangi bir değişiklik yapılmaz. Eksikse, yüklenir.
Paketin (bizim durumumuzda Apache paketi) kaldırılması da oldukça basittir:
- name: Remove Apache if no longer required
ansible.builtin.yum:
name: httpd
state: absent
İşte komut satırında state parametresinin değerini değiştirerek bir paketi temiz ve idempotent bir şekilde nasıl kurup kaldırabileceğiniz.
Birden fazla paketle çalışma
Yöneticilerin tek bir görevde sıklıkla birden fazla paket yüklemesi veya kaldırması gerekir. Yum modülü, ad argümanı olarak bir liste kabul eder:
Bu örnek, Git, wget ve curl’ün hedef sisteme yüklendiğinden emin olur. Görev, yalnızca listelenen paketlerden biri veya daha fazlası mevcut değilse bir değişikliği tetikler.
Paketleri güncel tutmak
Yaygın bir diğer gereklilik ise, yapılandırılmış depodaki paketlerin en son sürüme güncellenmesidir. Bunu yum modülünü kullanarak nasıl yapabileceğiniz aşağıda açıklanmıştır:
- name: Upgrade nginx to the latest version
ansible.builtin.yum:
name: nginx
state: latest
Bu, mevcut en son nginx sürümünün yüklü olmasını garanti eder. Özellikle, sistemleri dağıtımdan önce bilinen ve güncel bir duruma getirmek için tasarlanmış kılavuzlarda kullanışlıdır.
RPM dosyalarını doğrudan yükleme
Depo tabanlı kurulumlara ek olarak, yum modülü yerel RPM paketlerini de işleyebilir. Bu, genel depolarda bulunmayan özel yazılım veya satıcı paketlerini yüklerken kullanışlıdır.
- name: Install a local RPM
ansible.builtin.yum:
name: /tmp/package-name.rpm
state: present
RPM’de karşılanmamış bağımlılıklar varsa, yum bunları sistemin yapılandırılmış depolarını kullanarak çözmeye çalışır.
Gerektiğinde, örneğin geliştirme ortamlarında veya kontrollü test senaryolarında, GPG imza denetimini devre dışı bırakmak da mümkündür:
- name: Install without GPG checks
ansible.builtin.yum:
name: /tmp/unsigned-package.rpm
disable_gpg_check: true
state: present
Üretim sistemlerinde dikkatli kullanılmalı ve kaçınılmalıdır.
Depoya duyarlı davranış
Ansible, paket yönetimini depo yapılandırmasından ayırır. Özel veya üçüncü taraf depolara ihtiyaç duyuluyorsa, bunları açıkça tanımlamak için yum_repository modülü kullanılmalıdır:
- name: Add a third-party repository
ansible.builtin.yum_repository:
name: example
description: Example Repository
baseurl: https://repo.example.com/centos/$releasever/os/$basearch/
gpgcheck: true
gpgkey: https://repo.example.com/RPM-GPG-KEY-example
enabled: true
Bu adım, sistemleri hava boşluklu ortamlara dağıtırken veya kısıtlı depolama alanına erişimi olan güçlendirilmiş temel çizgiler kullanırken sıklıkla gereklidir.
Hizmetler ve görevlilerle koordinasyon
Paket kurulumu genellikle hizmet yönetimiyle bağlantılıdır. Tipik bir model, paket kurulduktan veya yükseltildikten sonra hizmeti başlatan veya yeniden başlatan bir işleyiciye bildirim göndermektir:
- name: Install Apache
ansible.builtin.yum:
name: httpd
state: present
notify: Restart Apache
handlers:
- name: Restart Apache
ansible.builtin.service:
name: httpd
state: restarted
Bu mekanizma, hizmet yeniden başlatmalarının yalnızca gerektiğinde gerçekleşmesini sağlayarak rutin dağıtımlar sırasında gereksiz kesintileri azaltır.
Platform farkındalığı ve uyumluluğu
Deneyimlerime göre, genellikle hala CentOS 7 veya daha eski sürümleri çalıştıran ve yum’un varsayılan ve tek kullanılabilir paket yöneticisi olduğu eski bir CentOS sistemiyle karşılaşmanız kaçınılmazdır.
Fedora ve RHEL 8+ sistemleri için dnf ikili dosyası genellikle CLI uyumluluğunu koruyan bir yedek dosyadır ve Ansible bunu şeffaf bir şekilde halleder.
Ancak, tam tutarlılık arıyorsanız, neredeyse aynı sözdizimi ve davranışa sahip dnf modülü alternatif olarak mevcuttur. Çoğu kullanım durumu için, yum ve dnf arasındaki seçim mutlak teknik bir zorunluluktan ziyade bir politika meselesidir.