Network sistemlerinin büyümesi cihaz sayısının artmasıyla sonuçlanırken, çok sayıda cihazın yönetimi aynı işin bir kişi tarafından tekrar tekrar yapılmasıyla sonuçlanabiliyor. Bu bariz bir şekilde zaman kaybına neden olabiliyor. Aynı zamanda ayarları yapan operatörün onlarca/yüzlerce, hatta bazen binlerce cihaza aynı/benzer ayarları girerken kafasının karışabileceği, dikkatinin dağılabileceği gibi bir takım insani etkenlerde, bütün cihazlara aynı işlem yapılsa bile aralarından bir tanesinde eksik, fazla veya yanlış ayar girilince farklılık oluşmasına yol açabiliyor. Bu farkların bulunması, bazı durumlarda tüm cihazların kontrolünü dahi gerektirebileceği için mühendislerin çok fazla zamanını alabiliyor. Tüm bu hata bulma ve çözme süreçleri sırasında, söz konusu hata, bir kesintiye yol açtıysa başa gelebilecek zararlar birçok ekibi değişiklik yapmaktan çekinir hale getirebiliyor.

Bazen tüm ayarlar doğru yapılsa bile, yapılan bazı değişiklikler istenen sonucu vermeyebiliyor veya günü kurtarmak için/geçici değişiklikler uygulanabiliyor. Bu değişikliklerin daha sonra geriye alınması gerekebiliyor. Geriye alma işlemi sırasında da, biraz önce bahsedilen tüm riskler tekrar ortaya çıkabiliyor.

Tüm bunların yanı sıra, “Dün a.b.c.d IP adresine ICMP echo isteği (ping) gönderip cevap alırken bugün onu dahi yapamıyorum!” gibi istekler geldiğinde, son 1 gün içinde hangi network operatörünün hangi değişiklikleri yaptığını detaylıca görmek, sorunun kaynağını bulmayı ve çözmeyi oldukça hızlandırabiliyor. Ayrıca, ilgili gün ve saate ait ayarı seçerek tüm network altyapısını o anki ayarlara döndürme fırsatı ise böyle durumlar için sistem kurtarıcısı işlevini üstlenebiliyor.

Ansible Kullanımının Avantajları

Ağ içerisinde bulunan cihaz sayısındaki yüksek artış , yapıdan ve yöneten kişilerden bağımsız olarak, bu cihazların yönetimi veya bazen sadece bir güvenlik/bugfix güncellemesi dahi ciddi zamanlar alabildiği için, enerjisini tamamen aynı işe harcayan daha fazla insanın bu iş üzerinde çalışması gerekebiliyor. Orkestrasyon, bu işlemlerin birden çok sayıda cihaza yapılmasıyla gerçekleştiği için, 100 cihaz için de 1000 cihaz için de aynı sayıda mühendis bir Ansible komutuyla tüm cihazlarda aynı değişikliği başlatabiliyor. Cihazları isterse gruplar halinde, 5’er 5’er veya 10’ar 10’ar olarak da güncelleyebiliyor.
Networkler üzerinde yer alan cihazlar ile tek tek uğraşmadan, ortak bir noktadan kontrol edilebilmesi; istenen komutların çalıştırılabilmesi ve çıktılarının alınabilmesi gibi süreçlerde network otomasyon araçları devreye giriyor. Bunların arasında açık kaynaklı ve GPL-3.0 lisanslı olan Ansible, sık kullanılan çözümler arasında geliyor. Ansible’ın declarative yapısı sayesinde, desteklenen çok sayıda cihaz ve komutta, aynı ayarları tekrar tekrar uygulasak bile Ansible, cihazlara bağlanıp çalışan “config’e” bakıyor, eğer elinde yer alan ayarlarla aynı ise hiçbir işlem yapmadan diğer cihazlara geçiyor. Bir farklılık görürse bunu anlık olarak düzeltiyor. Bu sayede, herhangi bir sebepten dolayı ayarları bozulan/değiştirilen bir cihaz görüldüğünde içinde neler değişmiş diye elle kontrol etmekle uğraşmadan, iş Ansible’a bırakılarak hızlıca önceki çalışır haline döndürülebiliyor. Tüm bunlara ek olarak, yeni bir cihaz alındığında “base configuration” dahil olmak üzere tüm ayarların tek bir Ansible komutu ile o cihaza da girilmesi sağlanabiliyor.
Ansible birçok kişi tarafından sistem yöneticilerinin kullandığı bir araç olarak bilinse de, özellikle son yıllarda Ansible için “network” otomasyonu ile “sistem” otomasyonu arasındaki fark tamamen kapatılmış durumdadır.Bu tarafta yapılan çalışmalar ve işbirlikleri, networklerin de sistemlerle benzer şekilde otomasyona tutulabilmesinin, orkestrasyonunun ve konfigürasyon yönetiminin yapabilmesini sağlıyor.Ayrıca tüm bunların hem declarative hem de bir sürüm kontrol sistemi üzerinde yapabilmesine de imkan sağlamaktadır.
Ansible, birçok network cihazı üzerindeki entegrasyonu, anlaşılması basit ve güzel duran “YAML” formatı kullanılması sebebiyle kolay yazımı, template desteği ile de dinamik olarak dosya üretimini destekliyor. Ayrıca, bağlanacağı cihazlar üzerinde bir “agent” gerektirmediği için karşı taraftaki cihazlara herhangi bir kurulum gerektirmiyor. Normal şartlarda bağlantısını SSH üzerinden yapsa dahi, istenilirse (tercih edilmese de) Ansible’ı Telnet veya farklı bağlantı yöntemleri üzerinden network cihazlarına bağlanılıp istenilenleri yapması şeklinde ayarlanabiliyor.
Network otomasyonu, orkestrasyonu ve konfigürasyon yönetimi, bahsedilen özellikleri yazılan dosyalarla sağlayabildiği için bu dosyaları yedeklemek de bir kopyala-yapıştır sürecinden ibaret olmaktadır. Hatta bu dosyaları “git”gibi bir sürüm kontrol sistemine vererek, kimin hangi tarih ve saatte hangi dosyada hangi değişikliği yaptığını tutmak ve istenen sürüme geri dönmek oldukça kolay ve takip edilebilir bir hal almaktadır.

Arayüz ve Sonuç

Tüm bu süreçleri bir web arayüzü üzerinden kontrol etmek, rol bazlı erişim kontrolü (RBAC), kimin ne zaman hangi işi çalıştırdığı ve daha detaylı süreç takibi gibi birçok ekstra özellik için Ansible Tower veya onun açık kaynaklı ve Apache-2.0 lisanslı upstream’i olan AWX projesi kullanılarak, yönetilebilir, ölçeklenebilir, izlenebilir, dağıtık versiyon kontrolüne sahip, otomatize edilmiş bir sistem elde edilebiliyor