RHCE Ansible ile otomasyon
Ansible ile birden çok sunucuyu aynı anda ve tekrarlanabilir biçimde yapılandırmayı, rolleri ve şifreli sırları kullanmayı öğrenirsin.
Seviye 301 · 25 ders · 21 pratik lab
Dersler
Proje, envanter ve erişim
- Ansible projesini Git ile hazırlamak: Playbook, envanter ve ayar dosyalarını düzenli bir proje dizinine yerleştirip Git ile sürümlendirebileceksin.
- ansible.cfg ve proje varsayılanları: ansible.cfg içinde envanter, kullanıcı ve yetki yükseltme varsayılanlarını belirleyip hangi dosyanın geçerli olduğunu görebileceksin.
- ansible-navigator ve yürütme ortamları: Playbook’u ansible-navigator ile bir yürütme ortamı içinde çalıştırıp çıktısını inceleyebileceksin.
- ansible-doc ile çevrimdışı belgeler: İnternet olmadan bir modülün parametrelerini ve örneklerini ansible-doc ile bulup playbook’a uygulayabileceksin.
- Statik envanter: gruplar ve değişkenler: Sunucuları gruplara ayıran ve gruba özel değişken taşıyan bir envanter dosyası yazabileceksin.
- SSH anahtarları ve yetki yükseltme (become): Yönetilen düğümlere parolasız anahtarla bağlanıp become ile yalnızca gerektiğinde yetki yükseltebileceksin.
- Tek satır (ad hoc) komutlarla düğümleri sınamak: ansible komutuyla ping ve dosya kontrolü gibi hızlı işleri tüm gruba uygulayabileceksin.
- Konak desenleri ve limit ile hedef seçmek: Desenler ve --limit ile bir işin yalnızca belirli sunuculara uygulanmasını sağlayabileceksin.
- Kısa görev: dört düğümlü envanteri kur ve hepsine yetkiyle ulaştığını kanıtla
Playbook yazmak
- İlk playbook: yinelenebilir (idempotent) modüller: Paket, dosya ve servis modülleriyle aynı playbook’u iki kez çalıştırıp ikinci çalıştırmanın değişiklik yapmadığını doğrulayabileceksin.
- Handler’lar ile servisi yalnızca değişimde yeniden başlatmak: Yapılandırma dosyası değiştiğinde tetiklenen handler tanımlayıp gereksiz yeniden başlatmayı önleyebileceksin.
- Döngüler, olgular (facts) ve koşullar: loop ve when ile sunucunun işletim sistemine göre farklı görev uygulayabileceksin.
- register ile sonucu yakalamak ve görev durumunu denetlemek: Bir görevin çıktısını değişkende saklayıp failed_when ve changed_when ile sonucu kendi ölçütünle yorumlayabileceksin.
- block, rescue ve always ile hata yönetimi: Başarısız bir adımda geri alma görevlerini çalıştıran block yapısı yazabileceksin.
- Playbook hatalarını ayıklamak: YAML, Jinja2 ve modül hataları: Sözdizimi denetimi, --check ve -vvv ile hatanın yerini bulup düzeltebileceksin.
- Kısa görev: web sunucusunu kuran ve hata olursa geri dönen playbook yaz
Değişkenler, şablonlar, roller ve koleksiyonlar
- Değişkenler, olgular ve öncelik sırası: Aynı değişkenin farklı yerlerde tanımlandığında hangi değerin kazandığını görüp çakışmaları çözebileceksin.
- Özel olgular (custom facts) oluşturmak: Sunucuda bir fact dosyası bırakıp playbook içinde ansible_local üzerinden kullanabileceksin.
- Jinja2 şablonlarıyla yapılandırma dosyası üretmek: Sunucuya özel değerleri şablona yerleştirip her düğüm için doğru yapılandırma dosyasını üretebileceksin.
- Ansible Vault ile sırları korumak: Parola gibi bilgileri şifreli dosyada tutup playbook çalışırken güvenle kullanabileceksin.
- Playbook’ları import ve include ile parçalamak: Büyük bir playbook’u yeniden kullanılabilir parçalara ayırıp statik ve dinamik içe almanın farkını açıklayabileceksin.
- Yeniden kullanılabilir rol oluşturmak: ansible-galaxy ile rol iskeleti üretip görev, handler ve şablonları rolde toplayabileceksin.
- Rol ve koleksiyon içeriğini kurmak ve kullanmak: Hazır rol ve koleksiyonu kurup içindeki modülü playbook’ta tam adıyla kullanabileceksin.
- Kısa görev: şifreli parolalarla kullanıcı açan bir rol yaz ve paylaş
Uygulama
- Bitirme görevi: paket, servis, güvenlik duvarı, kullanıcı ve depolamayı otomatikleştirmek: Birden çok sunucuda paket, servis, güvenlik duvarı, kullanıcı, zamanlanmış görev ve depolama ayarını tek playbook ile kurabileceksin.
Pratik lablar
- Dört düğümü gruplara ayıran envanter yaz: Web, veritabanı ve test gruplarını içeren statik bir envanter yazıp ansible-inventory ile grafiğini doğrularsın.
- Tek satırlık komutlarla bir düğümü hazırla: Yönetilen düğümlerde ad hoc komutlarla bir paketi kurar, servisi başlatır ve bir dosyayı kopyalayıp sonucu doğrularsın.
- Grup değişkeni ve desenlerle hedef seç: Grup ve ana makine değişkenlerini dizinlere böler, kesişim ve dışlama desenleriyle yalnızca istenen iki düğümde komut çalıştırırsın.
- Proje için ansible.cfg hazırla: Envanter yolu, uzak kullanıcı ve rol dizinini tanımlayan bir ansible.cfg yazıp etkin ayarları ansible-config ile listelersin.
- Düğümlerde parolasız yetki yükseltmeyi kur: Otomasyon kullanıcısının SSH anahtarını ve sudoers kaydını üç düğüme dağıtıp become ile yönetici komutu çalıştırabildiğini kanıtlarsın.
- Playbook'u yürütme ortamında çalıştır: ansible-navigator ayar dosyasını yerel yürütme ortamı imajını kullanacak şekilde yazar, playbook'u çalıştırıp çıktı kaydını incelersin.
- Paket kurup servis başlatan playbook yaz: Zaman eşitleme paketini kuran, servisini etkinleştiren ve ikinci çalıştırmada değişiklik bildirmeyen bir playbook yazarsın.
- Ayar değişince servisi işleyiciyle yeniden yükle: SSH sunucusu ayarını lineinfile ile değiştiren ve yalnızca değişiklik olduğunda servisi yeniden yükleyen işleyicili bir playbook yazarsın.
- Komut görevlerini eşgüçlü modüllere çevir: Her çalıştırmada değişiklik bildiren shell görevleriyle dolu bir playbook'u uygun modüllerle yeniden yazıp ikinci koşuda sıfır değişiklik elde edersin.
- Döngüyle paket ve kullanıcı oluştur: Bir değişken listesindeki beş paketi ve üç kullanıcıyı döngüyle kuran kısa bir playbook yazarsın.
- Düğüm bilgilerine göre koşullu görev çalıştır: Bellek miktarı ve dağıtım sürümü bilgilerine göre farklı ayar dosyası kopyalayan koşullu görevler yazıp iki düğümde sonucu karşılaştırırsın.
- Sonucu kaydet, hazır olana dek yeniden dene: Bir servisin sağlık adresini yanıt verene kadar yoklayan, sonucu kaydeden ve başarısızlık koşulunu kendin tanımladığın görevler yazarsın.
- Sözdizimi bozuk playbook'u onar: Girinti ve tırnak hataları içeren bir playbook'u sözdizimi denetimiyle bulup çalışır hale getirirsin.
- Başarısız veritabanı kurulumunu rescue ile geri al: Bir veritabanı kurulumunu block içinde yapan, hata olursa paketi kaldırıp uyarı dosyası bırakan ve her durumda kayıt yazan bir playbook yazarsın.
- Yalnızca bazı düğümlerde çöken playbook'u çöz: Tanımsız değişken ve yanlış Jinja2 süzgeci yüzünden iki düğümde çöken playbook'u ayrıntılı çıktı ve debug ile izleyip düzeltirsin.
- Şablondan karşılama iletisi üret: Her düğümün adını, IP adresini ve bellek miktarını içeren bir /etc/motd dosyasını Jinja2 şablonuyla dağıtırsın.
- Tüm düğümler için hosts dosyası üret: Envanterdeki bütün düğümleri dolaşan bir şablonla her makinede aynı /etc/hosts dosyasını üretip ad çözümlemeyi sınarsın.
- Özel bilgiyle koşullu yapılandırma üret: Düğümlere rolünü bildiren özel bir bilgi dosyası yerleştirir, şablonda bu bilgiye göre farklı web sunucusu ayarı üretip işleyiciyle uygularsın.
- Parola dosyasını Vault ile şifrele: Kullanıcı parolalarını içeren değişken dosyasını ansible-vault ile şifreleyip parola dosyası kullanarak playbook'u çalıştırırsın.
- Web sunucusu için yeniden kullanılabilir rol yaz: Görevleri, işleyicileri, şablonu ve varsayılan değişkenleri olan bir rol iskeleti oluşturup iki farklı portla iki düğüme uygularsın.
- Gereksinim dosyasından rol ve koleksiyon kur: Yerel arşivlerden bir rolü ve bir koleksiyonu requirements.yml ile kurar, sistem rolüyle zaman eşitlemeyi ve şifreli değişkenle bir kullanıcıyı yapılandırırsın.
Kurs hakkında
Ansible ile birden çok sunucuyu aynı anda ve tekrarlanabilir biçimde yapılandırmayı, rolleri ve şifreli sırları kullanmayı öğrenirsin.
Ne öğreneceksin
- Proje, envanter ve erişim
- Playbook yazmak
- Değişkenler, şablonlar, roller ve koleksiyonlar
- Uygulama
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.