Ağ Cihazı Konfigürasyon Yedekleme Otomasyonunda Git Tabanlı Değişiklik Takibi
Ağ altyapınızda konfigürasyon yedeklerini güvenle alıp değişiklikleri adım adım takip etmek için Git tabanlı otomasyon çözümünü keşfedin. Sürüm kontrolünün ağ yönetimine getirdiği esnekliği ve güvenliği öğrenin.
Giriş
Günümüz ağ altyapılarında yüzlerce, hatta binlerce cihazın konfigürasyonunu yönetmek, değişiklikleri takip etmek ve olası hatalarda hızla geri dönüş yapabilmek kritik bir ihtiyaçtır. Manuel yedekleme yöntemleri zaman alıcıdır, hatalara açıktır ve tarihçe tutma konusunda yetersiz kalır. İşte tam da bu noktada Git tabanlı değişiklik takibi (change tracking) ile birleştirilmiş bir ağ cihazı konfigürasyon yedekleme otomasyonu devreye giriyor. Bu rehberde, Git’in sürüm kontrol yeteneklerini kullanarak ağ cihazlarınızın konfigürasyonlarını nasıl otomatik yedekleyeceğinizi ve her değişikliği nasıl kayıt altına alacağınızı adım adım öğreneceksiniz.
Neden Git Tabanlı Yedekleme?
Git, yazılım geliştirme dünyasının vazgeçilmez araçlarından biridir; çünkü metin tabanlı dosyalardaki en küçük değişikliği dahi satır satır izleyebilir. Ağ cihaz konfigürasyonları da esasında birer metin dosyası olduğundan, Git bu alanda mükemmel bir uyum sağlar. İşte Git’i yedekleme otomasyonunuzun merkezine koymanın avantajları:
- Değişiklik Geçmişi: Her yedeklemede yapılan değişiklikler
git diffile anlık olarak görüntülenebilir. - Kolay Geri Alma: Hatalı bir konfigürasyon değişikliğinde, birkaç komutla önceki çalışan sürüme dönülebilir.
- İş birliği ve Onay Mekanizmaları: Değişiklikler belirli bir dalda (branch) test edilip onaylandıktan sonra ana dala (main) merge edilebilir.
- Dağıtık Yedekleme: Git depoları lokal veya GitHub, GitLab gibi merkezi sunucularda saklanabilir, böylece veri kaybı riski azalır.
- Olay İzleme: Kimin ne zaman hangi değişikliği yaptığı loglanır.
Aşağıdaki tabloda geleneksel yöntemlerle Git tabanlı otomasyon arasındaki temel farkları görebilirsiniz.
| Özellik | Manuel Yedekleme | Basit Otomasyon (cron+ftp) | Git Tabanlı Otomasyon |
|---|---|---|---|
| Değişiklik Takibi | Yok | Dosya tarihçesi yetersiz | Tam satır tabanlı diff |
| Geri Alma Kolaylığı | Zor (eski dosyayı bulmak) | Orta | Çok kolay (git checkout) |
| İş birliği / Onay Süreci | Mümkün değil | Sınırlı | Merge request ile tam kontrol |
| Depolama ve Yedeklilik | Local diske bağımlı | Merkezi sunucuda | Birden çok remote depo |
| Konfigürasyon Dışı Kullanım | Yok | Yok | Branch'lerde test ortamları |
Adım Adım Kurulum: Git Destekli Yedekleme Sistemi
Ağ cihazlarınızın konfigürasyonlarını düzenli aralıklarla çekip bir Git deposuna aktaran bir sistem kurmak için aşağıdaki adımları takip edebilirsiniz. Örneklerde yaygın ağ işletim sistemleri olarak Cisco IOS, MikroTik RouterOS ve Linux tabanlı sistemler temel alınmıştır.
1. Merkezi Git Deposu Oluşturma
Öncelikle konfigürasyon dosyalarının saklanacağı bir Git deposu oluşturun. Bu depoyu lokal bir sunucuda oluşturabileceğiniz gibi, GitHub, GitLab veya kendi Git sunucunuzda da barındırabilirsiniz. Güvenlik açısından özel bir depo (private repo) seçmeniz önerilir.
mkdir network-backups && cd network-backups
git init
git config user.email "[email protected]"
git config user.name "Otomatik Yedekleme"Eğer uzak sunucu kullanacaksanız:
git remote add origin [email protected]:kullanici/network-backups.git2. SSH Anahtar Bazlı Erişim Yapılandırması
Yedekleme sunucusunun ağ cihazlarına şifre sormadan erişebilmesi için SSH anahtar çifti oluşturup public anahtarı cihazlara tanımlayın. Bu hem güvenliği artırır hem tam otomasyon sağlar.
ssh-keygen -t ed25519 -f ~/.ssh/backup_keyOluşan backup_key.pub içeriğini her ağ cihazının yetkili kullanıcısının authorized_keys dosyasına ekleyin. MikroTik RouterOS cihazlarda SSH anahtarı eklemek için:
ssh admin@router "/user ssh-keys import public-key-file=backup_key.pub user=backup"3. Yedekleme Betiği (Script) Yazımı
Ağ cihazlarına bağlanıp konfigürasyonlarını alacak ve Git deposuna kaydedecek bir script hazırlayın. Aşağıda Bash ve Expect kullanılarak hazırlanmış, farklı cihaz tiplerini destekleyen örnek bir script bulunmaktadır.
#### Script Yapısı
#!/bin/bash
REPO_DIR="/opt/network-backups"
DEVICE_LIST="devices.txt"
LOG_FILE="/var/log/backup.log"
date >> $LOG_FILE
while IFS=',' read -r hostname device_type username; do
echo "Yedekleniyor: $hostname ($device_type)" >> $LOG_FILE
case $device_type in
cisco)
ssh -i ~/.ssh/backup_key $username@$hostname "show running-config" > $REPO_DIR/$hostname.cfg
;;
mikrotik)
ssh -i ~/.ssh/backup_key $username@$hostname "/export" > $REPO_DIR/$hostname.rsc
;;
linux)
ssh -i ~/.ssh/backup_key $username@$hostname "cat /etc/network/interfaces" > $REPO_DIR/$hostname.conf
;;
*)
echo "Bilinmeyen cihaz tipi: $device_type" >> $LOG_FILE
continue
;;
esac
if [ $? -eq 0 ]; then
echo "Başarılı: $hostname" >> $LOG_FILE
else
echo "Hata: $hostname" >> $LOG_FILE
fi
done < $DEVICE_LIST
cd $REPO_DIR
git add .
git commit -m "Otomatik yedekleme: $(date '+%Y-%m-%d %H:%M')"
git push origin maindevices.txt dosyası her satırda bir cihaz olacak şekilde hostname,device_type,username formatında hazırlanır:
switch-core,cisco,backup
router-edge,mikrotik,backup
firewall-01,linux,backup4. Periyodik Görev Tanımı (cron)
Scriptin belirli aralıklarla çalışması için bir cron job ekleyin. Örneğin her gece 02.00’de çalıştırmak için:
0 2 * * * /opt/scripts/backup.sh5. Değişiklikleri İzleme ve Raporlama
Git deposunda biriken commit'ler sayesinde her gün hangi değişikliklerin olduğunu kolayca görebilirsiniz. Örneğin son iki yedek arasındaki farkı incelemek için:
cd /opt/network-backups
git diff HEAD~1 router-edge.rscBu komut, MikroTik router’da yapılan konfigürasyon değişikliklerini satır satır gösterir. Değişikliklerin anormal olup olmadığını kontrol ettikten sonra gerekirse geri alabilirsiniz:
git checkout HEAD~1 router-edge.rsc6. Gelişmiş Kullanım: Branch Tabanlı Test Süreci
Özellikle büyük kurumsal ağlarda, yapılacak değişiklikleri önce bir test dalında (branch) simüle edip onayladıktan sonra ana dala merge etmek yararlıdır. Örneğin bir VLAN değişikliği yapmadan önce:
git checkout -b vlan-degisiklik
echo "yeni vlan konfigürasyonu" >> switch-core.cfg
git add switch-core.cfg
git commit -m "VLAN değişikliği test"
# Testler yapıldıktan sonra
checkout main
git merge vlan-degisiklik
git pushBu yaklaşım, yanlışlıkla yapılan değişikliklerin üretim ortamına kontrolsüzce girmesini engeller.
En İyi Uygulamalar ve Güvenlik İpuçları
- Özel Anahtar Güvenliği: Yedekleme için kullanılan SSH private key’ini yalnızca yetkili kişilerin okuyabileceği şekilde kısıtlayın (
chmod 600). - Depo Erişim Kontrolü: Git deposunu sadece yetkili ağ yöneticilerinin erişebileceği bir yerde barındırın; HTTPS yerine SSH ile clone/push önerilir.
- Şifreli Yedekleme: Hassas konfigürasyon dosyalarını depoya eklemeden önce
git-cryptveya benzeri araçlarla şifreleyin. - Monitoring Entegrasyonu: Yedekleme scriptinin başarılı olup olmadığını kontrol eden bir Nagios/Zabbix uyarısı tanımlayın. Başarısız commit’ler veya push işlemleri anında bildirilsin.
- Yedekleme Sıklığını Ayarlama: Kritik cihazlar için günde bir defadan fazla yedek alma ihtiyacı doğabilir. Git deponuza yük bindirmemek için
git gc --autoile düzenli temizlik yapın. - Otomatik Merge Conflict Çözümü: Eğer birden fazla kaynaktan aynı depoya commit atılıyorsa, merge conflict’leri önlemek için cihaz başına ayrı dosya veya klasör yapısı kullanın.
Sonuç
Ağ altyapısının omurgasını oluşturan cihazların konfigürasyon yönetiminde Git, hem maliyet etkin hem de son derece güçlü bir çözümdür. Bu rehberde anlatılan yöntemle kurumsal seviyede bir değişiklik takip ve yedekleme sistemi kurabilir; olası kesinti ve güvenlik risklerini minimize edebilirsiniz. Unutmayın, iyi yapılandırılmış bir ağ cihazı konfigürasyon yedekleme otomasyonu sayesinde ağınız her zaman kurtarılabilir ve denetlenebilir durumda olur.
Ağ yönetim süreçlerinizi daha da ileriye taşımak için ihtiyaç duyacağınız donanımlar konusunda Dincnet.com’un geniş ürün yelpazesinden faydalanabilirsiniz. Altyapınızı güçlendirecek güvenilir ağ ekipmanlarını keşfetmek için Dincnet.com adresini ziyaret edin.