Takip et

Etckeeper Nedir ve Neden Kullanmalıyız?

Sunucu yönetimi, sistem kararlılığı ve güvenliği açısından kritik bir dizi görevi içerir. Bu görevlerden biri de sistem yapılandırma

Sunucu yönetimi, sistem kararlılığı ve güvenliği açısından kritik bir dizi görevi içerir. Bu görevlerden biri de sistem yapılandırma dosyalarının bulunduğu /etc dizininin etkin bir şekilde yönetilmesidir. Yanlış yapılan bir değişiklik, bir güncelleme veya hatalı yapılandırma, sistemin çalışmasını durdurabilir veya güvenlik açıklarına yol açabilir. Bu tür sorunları önlemek, hızlıca geri almak ve yapılan değişiklikleri izlemek için versiyon kontrol sistemleri (VCS) vazgeçilmezdir.

/etc dizinini versiyon kontrolü altına almak için özel olarak tasarlanmış araçlardan biri de Etckeeper’dır. Bu rehberde, CentOS 7 üzerinde Etckeeper kullanarak /etc dizinini nasıl yöneteceğinizi, kurulumdan temel kullanıma ve gelişmiş senaryolara kadar adım adım inceleyeceğiz.

Etckeeper Nedir ve Neden Kullanmalıyız?

/etc dizini, Linux sistemlerinin kalbi gibidir; ağ yapılandırmalarından kullanıcı kimlik doğrulamalarına, servis ayarlarından güvenlik politikalarına kadar her şey burada saklanır. Bu dosyaların yanlışlıkla silinmesi, bozulması veya hatalı bir şekilde değiştirilmesi ciddi sorunlara yol açabilir. Genellikle, bir sistem yöneticisi bir değişikliği geri almak istediğinde, ya manuel yedeklere güvenir ya da sorunu sıfırdan çözmeye çalışır ki bu da zaman alıcı ve hataya açık bir süreçtir.

Etckeeper, bu sorunu çözmek için tasarlanmış basit ama güçlü bir araçtır. Temel olarak, /etc dizinini seçtiğiniz bir versiyon kontrol sistemi (Git, Mercurial, Bazaar veya Darcs) altına alır. Etckeeper’ın ana özellikleri şunlardır:

  • Otomatik Değişiklik Takibi: yum gibi paket yöneticileriyle entegre çalışarak, paket kurulumu, güncellemesi veya kaldırılması sırasında /etc dizinindeki değişiklikleri otomatik olarak kaydeder.
  • Kolay Geri Alma: Yanlış yapılan bir değişikliği veya bozuk bir yapılandırma dosyasını önceki bir sürüme kolayca geri döndürme imkanı sunar.
  • Değişiklik Geçmişi: Kimin, ne zaman ve hangi dosyada ne tür bir değişiklik yaptığını detaylı bir şekilde görmenizi sağlar.
  • Çatışma Çözümü: Birden fazla yöneticinin aynı dosyalar üzerinde çalıştığı durumlarda, VCS’nin çatışma çözme yeteneklerinden faydalanır.

CentOS 7 gibi üretim ortamlarında yaygın olarak kullanılan bir sunucu işletim sisteminde Etckeeper kullanmak, sistem yapılandırma yönetimini profesyonel bir seviyeye taşır, hata olasılığını azaltır ve problem çözme süreçlerini hızlandırır.

CentOS 7 Üzerine Etckeeper Kurulumu

Etckeeper’ı CentOS 7 sisteminize kurmak oldukça basittir. Başlamadan önce, Etckeeper’ın kullanacağı bir versiyon kontrol sisteminin (genellikle Git) kurulu olduğundan emin olmalısınız.

Ön Koşullar: Git Kurulumu

CentOS 7’de Git varsayılan olarak yüklü gelmeyebilir. Eğer yüklü değilse, aşağıdaki komutla kurabilirsiniz:

sudo yum install git -y

Etckeeper Kurulumu

Git kurulu olduktan sonra, Etckeeper paketini yum kullanarak kurabiliriz:

sudo yum install etckeeper -y

Etckeeper Başlangıç Yapılandırması ve İlk Commit

Etckeeper kurulduktan sonra, /etc dizinini versiyon kontrolü altına alması için ilk başlatma işlemini yapmamız gerekiyor. Bu işlem, Etckeeper’ın /etc dizininde bir Git deposu (repository) oluşturmasını ve mevcut tüm dosyaların ilk commit’ini yapmasını sağlar.

sudo etckeeper init

Bu komut, /etc/.git dizinini oluşturacak ve /etc altındaki tüm mevcut dosyaları ilk commit olarak kaydedecektir. Bu işlemi takiben, Etckeeper yapılandırma dosyasını düzenleyerek bazı ayarları özelleştirebilirsiniz.

Etckeeper Yapılandırma Dosyası

Etckeeper’ın ana yapılandırma dosyası /etc/etckeeper/etckeeper.conf‘tur. Bu dosyayı bir metin düzenleyici ile açarak (örneğin vi veya nano) bazı önemli ayarları gözden geçirebilirsiniz:

sudo vi /etc/etckeeper/etckeeper.conf

Bu dosyada dikkat etmeniz gereken başlıca ayarlar şunlardır:

  • VCS="git": Kullanılacak versiyon kontrol sistemini belirtir. Varsayılan olarak Git’tir ve genellikle değiştirmeye gerek yoktur.
  • AVOID_DAILY_AUTOCOMMITS="1": Günlük otomatik commit’leri devre dışı bırakır. Eğer cron işi ile manuel kontrol sağlamak isterseniz kullanışlıdır.
  • AVOID_COMMIT_BEFORE_INSTALL="0": Paket yükleme/güncelleme öncesi otomatik commit’i etkinleştirir (varsayılan). Bu ayarın 0 kalması önemlidir.
  • AVOID_COMMIT_AFTER_INSTALL="0": Paket yükleme/güncelleme sonrası otomatik commit’i etkinleştirir (varsayılan). Bu ayarın 0 kalması önemlidir.

Genellikle varsayılan ayarlar çoğu kullanım durumu için yeterlidir. Ancak, belirli dosyaları Etckeeper’ın izlemesini istemiyorsanız, .gitignore dosyasına ekleme yapmanız gerekecektir. Etckeeper, /etc/.gitignore dosyasını kullanır. Örneğin, hassas veriler içeren veya sürekli değişen log dosyaları gibi dosyaları bu listeye ekleyebilirsiniz:

sudo vi /etc/.gitignore

Örnek bir .gitignore girdisi:

# /etc/.gitignore

Bu dosyaya Etckeeper tarafından izlenmesini istemediğiniz dosyaları ekleyin.

/ssh/ssh_host_*_key # SSH anahtarları /random-seed # Rastgele çekirdek dosyası /lvm/cache/.cache # LVM önbellek dosyaları

Unutmayın, .gitignore sadece Git’in bu dosyaları izlemesini engeller, onları silmez veya yedeklemez.

Etckeeper ile /etc Yönetimi ve Temel Komutlar

Etckeeper’ın en büyük avantajı, yum gibi paket yöneticileriyle entegrasyonudur. Bir paket yüklediğinizde, güncellediğinizde veya kaldırdığınızda, Etckeeper otomatik olarak /etc dizinindeki değişiklikleri algılar ve commit eder. Bu, manuel müdahaleye gerek kalmadan yapılandırma geçmişini korumanızı sağlar.

Otomatik Commit’ler

Örneğin, bir paket yüklediğinizde:

sudo yum install httpd -y

Bu komut çalıştıktan sonra, Etckeeper httpd paketinin /etc dizininde yaptığı tüm değişiklikleri otomatik olarak bir Git commit’i olarak kaydedecektir. Commit mesajı genellikle “committing changes in /etc before yum install httpd” ve “committing changes in /etc after yum install httpd” şeklinde olacaktır.

Manuel Commit Yapma

Paket yöneticisi kullanmadan elle bir yapılandırma değişikliği yaptığınızda, bu değişikliği Etckeeper’a manuel olarak kaydetmeniz önemlidir. Bu, standart Git komutları kullanılarak yapılır, ancak etckeeper commit komutunu kullanmak daha güvenlidir çünkü Etckeeper’ın kendi ön/son kancalarını tetikler.

Bir dosya üzerinde değişiklik yaptıktan sonra (örneğin /etc/ssh/sshd_config):

sudo vi /etc/ssh/sshd_config

Değişiklikleri kaydetmek için:

cd /etc
sudo etckeeper commit -m "SSHd yapılandırması güncellendi: PasswordAuthentication devre dışı bırakıldı."

etckeeper commit komutu, aslında git add -A . ve ardından git commit komutlarını çalıştırır, ancak Etckeeper’ın özel filtrelerini ve kancalarını kullanarak daha güvenli bir commit işlemi sağlar.

Değişiklik Geçmişini Görüntüleme

Yapılan tüm commit’leri ve mesajlarını görmek için git log komutunu kullanabilirsiniz:

cd /etc
sudo git log

Belirli bir dosyanın geçmişini görmek için:

cd /etc
sudo git log /etc/ssh/sshd_config

Dosya Farklarını Görüntüleme

Mevcut çalışma dizinindeki değişiklikleri son commit ile karşılaştırmak için:

cd /etc
sudo git diff

Belirli bir commit ile önceki commit arasındaki farkları görmek için (commit ID’sini git log çıktısından alabilirsiniz):

cd /etc
sudo git diff  

Dosyaları Geri Yükleme (Rollback)

Yanlışlıkla değiştirdiğiniz veya bozduğunuz bir dosyayı son commit’teki haline geri döndürmek için:

cd /etc
sudo git checkout -- /etc/ssh/sshd_config

Bir dosyayı belirli bir commit’teki haline geri döndürmek için:

cd /etc
sudo git checkout  -- /etc/ssh/sshd_config

Tüm /etc dizinini belirli bir commit’teki haline döndürmek çok daha riskli bir işlemdir ve genellikle sadece sistemin tamamen bozulduğu ve geri yükleme gerektirdiği durumlarda düşünülmelidir. Bu işlemi yapmadan önce mutlaka kapsamlı bir yedek alın:

# DİKKAT: Bu komut tüm /etc dizinini belirtilen commit'e geri döndürür.

Kullanmadan önce mutlaka tam bir yedek alın!

cd /etc sudo git reset --hard

Gelişmiş Kullanım Senaryoları ve En İyi Uygulamalar

Etckeeper, temel işlevlerinin ötesinde, sunucu yönetimini daha da kolaylaştırmak için çeşitli gelişmiş senaryolarda kullanılabilir.

Uzak Depo (Remote Repository) Entegrasyonu

/etc dizinindeki Git deposunu uzak bir sunucuya (örneğin bir GitLab, GitHub veya Gitea sunucusuna) push etmek, yapılandırma dosyalarınız için harici bir yedekleme ve merkezi bir yönetim noktası sağlar. Bu, felaket kurtarma durumlarında veya birden fazla sunucuyu benzer yapılandırmalarla yönetirken çok faydalıdır.

Önce, uzak depoyu ekleyin:

cd /etc
sudo git remote add origin git@your-git-server.com:your-organization/etc-repo.git

Ardından, değişiklikleri uzak depoya push edin:

cd /etc
sudo git push -u origin master

Bu adımları gerçekleştirmeden önce, Git sunucunuzda SSH anahtarlarının doğru yapılandırıldığından ve /etc deposunun oluşturulduğundan emin olun.

Düzenli Commit’ler İçin Cron İşleri

Etckeeper, paket yöneticileriyle otomatik commit yapsa da, manuel yapılan değişiklikleri veya paket yöneticisi kullanılmadan yapılan ayar güncellemelerini yakalamak için günlük veya haftalık otomatik commit’ler ayarlamak iyi bir uygulamadır. Etckeeper, bunun için özel bir cron betiği sağlar.

Varsayılan olarak, Etckeeper’ın günlük commit cron işi etkin değildir (AVOID_DAILY_AUTOCOMMITS="1"). Eğer bu özelliği etkinleştirmek isterseniz, /etc/etckeeper/etckeeper.conf dosyasındaki AVOID_DAILY_AUTOCOMMITS satırını "0" olarak değiştirin:

# /etc/etckeeper/etckeeper.conf
AVOID_DAILY_AUTOCOMMITS="0"

Bu ayar, Etckeeper’ın /etc/cron.daily/etckeeper betiğini çalıştırmasını sağlar.

Hassas Verilerin Yönetimi

/etc dizini genellikle veritabanı şifreleri, API anahtarları gibi hassas bilgiler içerebilir. Bu tür bilgileri doğrudan bir Git deposuna commit etmek güvenlik riski taşır. En iyi uygulamalar şunlardır:

  • .gitignore Kullanımı: Hassas verileri içeren dosyaları /etc/.gitignore dosyasına ekleyerek Git’in izlemesini engelleyin. Ancak bu, dosyanın kendisinin yedeklenmediği anlamına gelir.
  • Şifreleme: Hassas verileri içeren dosyaları şifreleyin (örneğin Ansible Vault, HashiCorp Vault gibi araçlarla) ve sadece şifreli hallerini Git’e commit edin.
  • Ortam Değişkenleri/Harici Sistemler: Mümkünse hassas bilgileri /etc dışındaki güvenli bir yerden (örneğin ortam değişkenleri veya özel bir sır yönetimi sistemi) alın.

Değişikliklerin Düzenli İncelenmesi

/etc dizinindeki değişiklikleri düzenli olarak gözden geçirmek, yetkisiz veya istenmeyen değişiklikleri erken tespit etmenizi sağlar. Özellikle uzak bir depoya push yapılıyorsa, commit geçmişini periyodik olarak kontrol etmek önemlidir.

cd /etc
sudo git log --stat

Sonuç ve Sıkça Sorulan Sorular (SSS)

Etckeeper, CentOS 7 sunucularınızda /etc dizini yönetimini basitleştiren ve güvenliğini artıran paha biçilmez bir araçtır. Kurulumu kolaydır, paket yöneticileriyle sorunsuz entegre olur ve herhangi bir yapılandırma değişikliğini izlemenizi, geri almanızı ve analiz etmenizi sağlar. Bu sayede, sistem kararlılığını korurken olası hataları hızlıca düzeltebilirsiniz.

Sıkça Sorulan Sorular (SSS)

S: Etckeeper hangi Versiyon Kontrol Sistemlerini (VCS) destekler?
C: Etckeeper; Git, Mercurial (hg), Bazaar (bzr) ve Darcs’ı destekler. Varsayılan olarak Git kullanılır ve en yaygın tercih edilen seçenektir.

S: Etckeeper sadece yum ile mi çalışır?
C: CentOS 7’de ana paket yöneticisi yum olduğu için onunla entegre çalışır. Diğer Linux dağıtımlarında apt veya dnf gibi paket yöneticileriyle de sorunsuz çalışır.

S: Etckeeper tüm /etc dizinini mi izler?
C: Evet, Etckeeper varsayılan olarak /etc dizininin tamamını izler. Ancak, /etc/.gitignore dosyasına eklemeler yaparak belirli dosya veya dizinleri izleme dışı bırakabilirsiniz.

S: Hassas bilgileri (şifreler vb.) nasıl yönetmeliyim?
C: Hassas bilgileri içeren dosyaları doğrudan Git deposuna commit etmekten kaçının. Bunları /etc/.gitignore dosyasına ekleyebilir veya Ansible Vault gibi araçlarla şifreleyerek Git’e şifreli hallerini kaydedebilirsiniz.

S: Bir dosyayı önceki bir sürüme nasıl geri yüklerim?
C: cd /etc dizinine giderek ve sudo git checkout -- komutunu kullanarak dosyayı son commit’teki haline geri yükleyebilirsiniz. Belirli bir commit’e geri dönmek için sudo git checkout -- kullanın.

S: Etckeeper bir yedekleme çözümü müdür?
C: Hayır, Etckeeper bir tam sistem yedekleme çözümü değildir. Sadece /etc dizinindeki yapılandırma dosyalarının versiyon kontrolünü ve geçmişini sağlar. Tam bir sistem yedeklemesi için başka araçlar (örneğin rsync, tar, disk görüntüleme araçları) kullanmanız gerekir. Etckeeper, yapılandırma yedeklemesinin önemli bir parçasıdır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.