Yapılandırma Yönetimi
- İngilizcesi
- Configuration Management
- Türkçe karşılığı
- konfigürasyon yönetimi
- Okunuşu
- kınfigyıreyşın menicmınt
Günlük kullanımda iki ad da yaygın.
Kısaca
Yapılandırma yönetimi, sunucuların ve yazılımın istenen durumunu kodla tanımlama ve araçlarla bunu otomatik olarak uygulayıp koruma pratiğidir.
Yapılandırma yönetimi nedir?
DevOps'ta yapılandırma yönetimi, sistemlerin nasıl kurulması gerektiğini, yani hangi paketlerin yüklü olduğunu, hangi dosyaları ve ayarları içerdiklerini ve hangi servislerin çalıştığını tarif etmek ve ardından bir aracın her makineyi bu tanıma uydurmasını sağlamak demektir. Bir yöneticinin her sunucuya bağlanıp komutları elle çalıştırması yerine istenen durum sürüm kontrolündeki dosyalarda tutulur ve bir sunucuya ya da binlercesine otomatik uygulanır. Bunun için bilinen açık kaynaklı araçlar arasında Ansible, Puppet, Chef ve Salt bulunur.
Araçların çoğu bildirimseldir: nginx kurulu ve çalışıyor gibi sonucu belirtirsiniz, araç da hangi adımların gerektiğini bulur. Temel bir özellik idempotency'dir (eşkuvvetlilik); yani aynı yapılandırmayı iki kez uygulamak ikincisinde hiçbir şeyi değiştirmez, bu yüzden tekrar tekrar çalıştırmak güvenlidir. Bazı araçlar değişiklikleri bir kontrol makinesinden SSH üzerinden iter (push), bazıları ise her sunucuda yapılandırmasını düzenli olarak çeken ve istenen durumdan sapmaları düzelten bir ajan çalıştırır.
Her seferinde tam olarak izlenen ayrıntılı bir tarif gibidir; kimin pişirdiğine bakılmaksızın her yemek aynı çıkar. Yapılandırma yönetimi uzun ömürlü sunucu filolarında, şirket içi veri merkezlerinde ve temel imajları hazırlamada yaygın olarak kullanılır ve staging ile canlı gibi ortamları tutarlı tutar. Terimin yazılım mühendisliğinde daha eski ve daha geniş bir anlamı da vardır: kaynak kodundan belgelere kadar bir projenin her artefaktındaki değişiklikleri izlemek ve kontrol etmek.
Yapılandırma yönetimi sıklıkla kod olarak altyapıyla karıştırılır. Kod olarak altyapı genellikle ağlar, sanal makineler ve veritabanları gibi kaynakları oluşturmak anlamına gelen provisioning'i ifade eder; yapılandırma yönetimi ise zaten var olan makinelerin içindeki yazılımı kurar. Uygulamada ikisi örtüşür ve birçok ekip ikisini de kullanır. Değiştirilemez altyapıda ise yapılandırma yönetimi, canlı sunucularda tekrar tekrar değil, bir imaj oluşturulurken bir kez çalışır.
Önemli noktalar
- Yapılandırma yönetimi, sistemlerin istenen durumunu sürüm kontrolündeki kodda tutar.
- Araçlar bu durumu otomatik uygular ve mevcut makinelerdeki kaymayı düzeltir.
- Idempotency, aynı yapılandırmayı birçok kez uygulamayı güvenli kılar.
- Kod olarak altyapı kaynakları oluşturur; yapılandırma yönetimi üzerlerinde çalışanı yapılandırır.
- Çok sayıda sunucuyu ve ortamı tutarlı ve tekrarlanabilir tutar.
Örnek
# Describe the result you want, not the steps to get there
- name: Configure web servers
hosts: web
become: true
tasks:
- name: Ensure nginx is installed
ansible.builtin.apt:
name: nginx
state: present
- name: Ensure nginx is running and starts on boot
ansible.builtin.service:
name: nginx
state: started
enabled: trueSık sorulan sorular
Yapılandırma yönetimi ile kod olarak altyapı arasındaki fark nedir?
Kod olarak altyapı genellikle ağlar, sanal makineler ve yük dengeleyiciler gibi altyapı kaynaklarını oluşturur ve değiştirir. Yapılandırma yönetimi ise zaten var olan makinelere yazılım kurar ve onları yapılandırır; birçok ekip her iş için ayrı bir araç kullanır.
Yapılandırma yönetiminde idempotent ne demektir?
Aynı yapılandırmayı yeniden çalıştırmanın, sistem zaten istenen durumdaysa onu değiştirmeden bırakması demektir. Bir paketin kurulu olması gerektiğini söyleyen bir görev, paketin zaten kurulu olduğu bir makinede hiçbir şey yapmaz; böylece çalıştırmalar güvenle tekrarlanabilir.
Konteynerlerle birlikte yapılandırma yönetimine hâlâ ihtiyaç var mı?
Canlı sunucularda daha azı çalışır, çünkü konteyner imajları bir kez oluşturulur ve güncellenmek yerine değiştirilir. Ekipler yapılandırma yönetimini yine de konteynerleri çalıştıran ana makineler, sanal makine imajları ve konteynerleştirilemeyen sistemler için kullanır.
İlgili sayfalar
- Kod Olarak AltyapıDevOps ve Bulut, s. 27Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.
- Değiştirilemez AltyapıDevOps ve Bulut, s. 12Değiştirilemez altyapı, sunucuların dağıtımdan sonra hiç değiştirilmediği, her güncellemede yerlerine sıfırdan kurulan yenilerinin geldiği bir yaklaşımdır.
- IdempotencyBackend ve API'ler, s. 23Idempotency, bir işlemin bir kez de çalışsa çok kez de çalışsa aynı sonucu üretmesi özelliğidir; böylece bir isteğin yanlışlıkla tekrarlanması güvenli olur.
- YAMLDevOps ve Bulut, s. 52YAML, parantez yerine girinti kullanan, insanın okuyabileceği bir veri biçimidir; DevOps araçlarında ve CI/CD pipeline'larında yapılandırma için yaygındır.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- SSHAğlar, s. 27SSH, uzak bilgisayarlarda güvenle oturum açıp komut çalıştırmaya yarayan, iki makine arasındaki tüm trafiği şifreleyen kriptografik bir ağ protokolüdür.
- AnsibleDevOps ve Bulut, s. 1Ansible, YAML playbook'larını ajan kurmadan SSH üzerinden çalıştırarak sunucuları yapılandıran ve uygulama dağıtan açık kaynaklı bir otomasyon aracıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin