Sürekli entegrasyon ve sürekli teslimat/dağıtım (CI/CD), kod değişikliklerini daha güvenilir ve sık bir şekilde teslim etmek için kullanılan modern yazılım geliştirme uygulamalarıdır. CI/CD, yazılım dünyasında yaygın olarak benimsenmiş olsa da, ağ mühendisleri için de giderek daha fazla önem kazanmaktadır. Bu, özellikle ağların otomatikleştirildiği ve yazılım odaklı hale geldiği bir dönemde geçerlidir.
Bu yazıda, CI/CD’yi kısaca tanıtacak ve ağ mühendislerinin bu uygulamaları Cumulus Linux kullanarak ve NVIDIA Air dijital ikiz platformunda simülasyon yaparak nasıl kullanabileceklerini açıklayacağım.
CI/CD Boru Hattı Nedir?
CI/CD boru hattı, yazılım teslimat sürecini otomatikleştirir. Bu süreç, kodun test edilmesi, doğrulanması ve farklı ortamlara dağıtılması için tekrarlanabilir ve ölçeklenebilir bir yol sunar. Boru hattı, şu unsurları içerir:
- Sürekli entegrasyon (CI): Kod sık sık birleştirilir ve test edilir.
- Sürekli teslimat/dağıtım (CD): Kod otomatik olarak test, sahneleme ve üretim ortamlarına paketlenir ve dağıtılır.
Ağ mühendisleri için bu, ağ yapılandırmalarını ve otomasyon scriptlerini dağıtmak için daha verimli ve güvenilir bir süreç anlamına gelir.
Ağlarda CI/CD Neden Önemlidir?
Cumulus Linux gibi bir ağ işletim sistemi kullanmak, otomasyon ve script desteğine sahip olduğundan, ağ otomasyonu yazılım mühendisliğinde kullanılan aynı ilkeleri benimseyebilir.
Peki, bu neden önemlidir?
- Hız: Değişikliklerin daha hızlı iterasyonları ve dağıtımı.
- Kalite: Otomatik linting ve doğrulama, hataları azaltır.
- Güvenilirlik: Tutarlı süreçler, üretimde daha az sürpriz anlamına gelir.
- Ölçeklenebilirlik: Gelişen altyapı ve kullanım durumlarını kolayca destekleme.
CI/CD, Ağ Otomasyonuna Nasıl Uygulanır?
Ağ mühendislerinin CI/CD kavramlarını pratikte nasıl uygulayabileceğine bakalım.
Kod Değişimi: Konfigürasyonu Kod Olarak Ele Almak
Ağ yapılandırmalarını kod olarak ele aldığımızda, otomasyon scriptleri veya topoloji konfigürasyonları sürüm kontrolüne (örneğin, Git) tabi tutulur. Bu, değişikliklerin izlenebilir, gözden geçirilebilir ve test edilebilir olmasını sağlar; herhangi bir yazılım geliştirme iş akışında olduğu gibi.
Yapılandırma değişikliklerini kod değişiklikleri olarak kabul etmek, ağ ekiplerinin doğrudan DevOps iş akışına entegre olmasını sağlar ve görünürlük ile yönetimi artırır.
Sürekli Entegrasyon (CI)
CI, kod değişikliklerinin geçerliliğini ve yapılandırılabilirliğini otomatik olarak doğrular.
Ağ kullanım durumları için:
- Artifacts otomasyon scriptleri, konteyner imajları veya rendere edilmiş konfigürasyon dosyaları olabilir.
- Linting ve format kontrolleri, YAML, JSON veya Jinja2 şablonlarının sözdizimsel olarak doğru ve tutarlı olmasını sağlar.
- Statik konfigürasyon dosyaları oluşturmak yerine Jinja2 şablonlarını kullanarak, üst yapıyı, düğüm rolünü veya işlevi gibi değişkenlere dayalı olarak dinamik olarak yapılandırmalar oluşturun. Bu, insan hatasını azaltır ve esnekliği artırır.
Sürekli Teslimat (CD)
CD, doğrulanmış yapılandırmaların test ve üretim ortamlarına otomatik olarak dağıtımını gerçekleştirir.
Örneğin:
- Render edilen konfigürasyonlar otomasyon araçları ve scriptler kullanılarak dağıtılır.
- Hataları hızlıca yakalamak için loglama ve debug noktaları eklenmelidir.
- Yapılandırmaların tüm ağ düğümlerine başarıyla dağıtıldığını doğrulamak için sağlık kontrolleri ve doğrulamalar yapılabilir.
Bu yazının kapsamına girmeyeceğimiz tam bir boru hattı oluşturma detayları (örneğin, GitLab kullanarak), bir GitLab CI/CD kurulumundaki ana konfigürasyon dosyası olan .gitlab-ci.yml dosyasının önemini vurgulamak gerekir.
Bu YAML biçimindeki dosya, boru hattının nasıl çalıştığını tanımlar, aşamaları, görevleri ve yürütme mantığını belirtir. GitLab’a yapılandırma render’ı, test, doğrulama ve dağıtım gibi görevleri nasıl düzenleyeceğini söyler.
Bu dosya, otomasyon iş akışınızın tamamı için bir plan görevi gördüğünden, bunu doğru bir şekilde yapılandırmak ve görev parametrelerini doğru şekilde tanımlamak çok önemlidir. Bu dizinin bir sonraki yazısında, ağ otomasyonu için .gitlab-ci.yml dosyasını etkili bir şekilde yazma ve yönetme konusunda daha yakından bakacağız.
Otomatik Test ve Doğrulama
CI/CD boru hatları, otomatik doğrulama içerebilir:
- Aygıtlar arasında gösterim komutları çalıştırarak.
- Başarı ölçütlerini kontrol etmek için çıktıları ayrıştırarak (örneğin, arayüzlerin açık olup olmadığını, BGP komşularının kurulup kurulmadığını kontrol ederek).
- Başarısız dağıtımları üretime ulaşmadan önce işaretleyerek.
Bu, ağ sağlığı hakkında sürekli geri bildirim sağlayarak, yanlış yapılandırmaların yayılmasını önler.
NVIDIA Air ile CI/CD Kullanımı
NVIDIA Air dijital ikiz platformu, modern veri merkezleri için ileri düzey bir simülasyon ortamıdır. Cumulus Linux, SONIC ve host işletim sistemlerini simüle etme olanağı sağlar.
Kullanıcılar, aşağıdakileri kullanarak topolojiler oluşturabilir:
- Grafik arayüz aracı (sürükle-bırak yöntemiyle).
- JSON/DOT dosyaları (programatik oluşturma için).
Manuel kurulum genel kullanım durumları için etkili olsa da, CI/CD boru hatları hızlı iterasyon, doğrulama ve paylaşım için daha profesyonel iş akışları sunar.
NVIDIA AIR’i API’ler kullanarak otomatikleştirme:
- Düşük seviyeli otomasyon için REST API kullanımı
- Otomasyona uygun soyutlamalar sağlayan bir Python SDK kullanımı
Her iki yöntemle de boru hatları:
- Topolojiler oluşturabilir.
- Yapılandırmaları enjekte edebilir.
- Doğrulama scriptlerini tetikleyebilir.
- Tekrar edilebilirlik için laboratuvarları yok edip yeniden oluşturabilir.
CI/CD ve NVIDIA Air için Pratik Kullanım Durumları
Ağ mühendisleri, CI/CD’yi NVIDIA Air ile aşağıdaki amaçlar için kullanabilir:
- Konfigürasyon entegrasyonu: Konfigürasyon oluşturmayı otomasyon boru hatlarına doğrudan bağlama.
- Atölyeler ve demo: Atölye, eğitim veya sunumlar için sürekli, tekrarlanabilir laboratuvarlar oluşturma.
- Ortak çözümler: Müşteri veya ortaklara özel topolojiler teslim etmek için paylaşılabilir şablonlar oluşturma.
- Otomatik test: Çeşitli topolojilerde değişiklikleri hızlı bir şekilde, manuel çaba olmadan doğrulama.
NVIDIA Air’da bir veri merkezi simülasyon ortamı için örnek CI/CD boru hattı
Aşağıda, geliştirme ekibimizden bir veri merkezi kullanım durumu simülasyonu ile ilgili bir CI/CD boru hattı örneği bulunmaktadır:
- İlgili havuzdan gerekli repository’leri çekme: Farklı amaçlar için birden fazla git repository’si kullanılmaktadır (AIR otomasyon kodu, ağ konfigürasyonu render’ı ayrı repository’lerde saklanır), bu iş, topoloji dosyaları ve konfigürasyon scriptleri ile birlikte tüm kaynakları getirir.
- Konfigürasyon dosyası sözdizimi/format kontrolü yapma: Topoloji dosyalarının format gereksinimlerine uygun olup olmadığını ve Air API’si tarafından işlenebilirliğini kontrol etmemiz gerekir.
- Air simülasyonu olarak topolojiyi oluşturma: Bir dot veya json dosyasından AIR topolojisi oluşturuyoruz.
- Topoloji parametrelerini yapılandırma: Topoloji parametrelerini (örneğin, organizasyon seçeneği veya simülasyonun süresi) ayarlama.
- Simülasyonu başlatma ve ağ cihazları ile sunucuları yapılandırma: API çağrılarını kullanarak AIR simülasyonunu başlatıyor ve render edilmiş konfigürasyon dosyalarını ağ cihazlarına ve sunuculara kopyalıyoruz.
- Farklı gösterim komutları ve ping testleri ile topolojiyi doğrulama: Topolojinin doğru olup olmadığını ve kabloların tasarıma göre düzgün bir şekilde bağlanıp bağlanmadığını kontrol etme.
- Her şeyi kaydetme ve simülasyonu kapatma: Simülasyonu daha sonra kullanmak için kaydediyoruz ve kapatıyoruz.
Sonuç
CI/CD boru hatları, yazılım mühendisliğinde standart bir araç haline geldi ve artık ağ otomasyonunun kritik bir parçası. Cumulus Linux ve NVIDIA Air gibi platformlarla ağ mühendisleri, operasyonlarına aynı çeviklik, güvenilirlik ve verimlilik sunabilir.
CI/CD en iyi uygulamalarını güçlü simülasyon araçlarıyla birleştirerek, sanal laboratuvarlarda veya üretim veri merkezlerinde son derece ölçeklenebilir, hatasız ve hızlı ağ dağıtımları gerçekleştirebiliriz.
Daha Fazla Bilgi Edinin
- NVIDIA Air’a Giriş
- NVIDIA Air Hizmetlerini Kullanarak Simülasyonları Gerçek Dünya ile Bağlama
- NVIDIA Air’de Ölçeklenebilir, Özelleştirilmiş Ağ Topolojileri için Harici Dosya Yüklemelerinin Avantajları
- NVIDIA Air ile Ansible ve Git Kullanarak Ağ Tasarımını Otomatikleştirme
- NVIDIA Air Dokümantasyonu
- NVIDIA Cumulus Linux datasheet
- NVIDIA Cumulus Linux dokümantasyonu