Ansible Nedir ve Kullanım Alanları Nelerdir?

Ansible Nedir?

Ansible, yapılandırma yönetimi , bulut sağlama, yazılım dağıtımı ve hizmet içi düzenleme gibi hantal veya sürekli tekrarlayan ya da karmaşık görevleri otomatikleştiren popüler bir BT otomasyon motorudur.

Ansible, çok katmanlı dağıtımlar için kullanılırız ve her birini ayrı ayrı ele almak yerine tüm BT altyapısını tek bir dağıtımda modelleriz. Ansible mimarisinde kullanmak için aracı yoktur ve özel güvenlik mimarisi gerekmez. Dağıtım, Ansible’da kullanılan ve “YAML Değil İşaretleme Dili” anlamına gelen YAML olarak adlandırılan basit İngilizce benzeri bir dildir.

Ansible ile çalışmak çok kolaydır; bağlanmak için düğümlerinize “Ansible Modules” adı verilen küçük programları gönderir. Modülleri yürütmek için SSH aracısını kullanarak konumlandırabiliriz ve bağlanabilirler ve bittiğinde o eklenen Ansible Modules kaldırılır. Bu modüllerin makinelerde herhangi bir yerde bulunabilmesi için gerekli hiçbir sunucu, arka plan programı veya veri tabanı yoktur. İçerikteki değişiklikleri yönetmek için herhangi bir metin düzenleyici veya terminal programı ve bir sürüm kontrol sistemi ile birlikte çalışmanız gerekir. Ansible, içinde yerleşik 750’den fazla modüle sahiptir.

Ansible’da parolalar desteklenir, ancak Ansible ile çalışma yöntemlerinden biri olarak ssh-agent’larla SSH anahtarlarını kullanabilirsiniz.ssh-copy-id parametresi sayesinde Ansible işlerini yöneteceğimiz olan master sunucuyu bu parametre bilgisi eklenerek gerçekleştirebiliriz.Herhangi bir kullanıcı hesabı oluşturabilirsiniz ve kök kullanıcı gereklidir. Hangi makinelerin hangi ana bilgisayarlara erişebileceğini yapılandırmak için “yetkili_anahtar” adlı bir modül vardır.

Ansible’a basit bir metin biçiminde makineler ekleyebilir ve envanterinizi yönetebilirsiniz. Rackspace, EC2 ve Openstack gibi diğer kaynaklardan gelen envanter ve değişken bilgileri kullanabilir. Kodunuzu yazmanız gerekiyorsa, Ansible’ı Python, Ruby ve Bash gibi JSON döndüren dillerde de kullanabilirsiniz. Modüllerinizi, API’nizi ve Eklentilerinizi yazabilirsiniz. Playbook’lar, birden çok altyapıyı tek seferde düzenlemek için kullanılan basit ve güçlü otomasyon dilidir. Bu Ansible’da yapılabilir.

Ansible’a ihtiyacımız var mı?  Varsa Neden?

Ansible çok kullanışlıdır ve yapılandırılacak ve dağıtılacak 4 veya 5 web sunucusu olduğunda ve yapılandırılacak ve dağıtılacak 4’ten fazla veritabanı sunucusu olduğunda bu örneği takdir edersiniz. Web sunucularında uygulamalar vardır ve arka uçta veritabanı sunucularını birbirine bağlar. Artık geleneksel durum, bu sunucuları ayrı ayrı yapılandırmanızı ve yönetmenizi gerektiriyor.

Ancak bu sunucularda çeşitli uygulama güncellemeleri olacaktır. Daha fazla sunucu varsa ve bunların yapılandırmaları aynı olmayacaksa, bir sistem yöneticisi bile işleyemez. Bu görevler, sistem yöneticisinin yanı sıra uygulamaları geliştiren geliştiriciler tarafından çok fazla çaba sarf etmeden sunucu sayısını yapmak ve yönetmek karmaşıktır. Kuruluşun DNS, NTP, AD, E-posta vb. gibi sahip olduğu diğer sunucuları hayal edin.

Ansible’ın resme girdiği yer burasıdır. Altyapı otomasyonu ve orkestrasyonları Ansible tarafından yapılabilir. Tüm benzer sunucular Ansible tarafından tek seferde işlenebilir ve yönetilebilir.

Ansible’ın Kullanım Alanları

Ansible’ın kullanım durumları aşağıda listelenmiştir.

  • Altyapı Sağlama (Infrastructure Provisioning)
  • Konfigürasyon yönetimi (Configuration Management)
  • BT otomasyonu (IT automation)
  • Sürekli dağıtım (Continuous deployment)
  • Uygulama geliştirme (Application Development)
  • Ağ Otomasyonu (Network Automation)
  • Güvenlik Otomasyonu (Security Automation)
  • Altyapı Orkestrasyon (Infrastructure Orchestration)

Ansible kullanmanın en iyi 10 faydası

  1. Aracısız (Agentless) – İstemcilere/sunuculara Ansible ile çalışmak için dağıtılan hiçbir aracı veya yazılım yoktur. Bağlantı, SSH veya Python kullanılarak yapılabilir.
  2. English Like Language – Ansible’ı kullanmak, altyapıyı yapılandırmak ve dağıtmak çok basittir ve YAML olarak adlandırılan dil gibi İngilizce’dir.
  3. Modüler(Modular) – Ansible, BT Altyapısını otomatikleştirmek, yapılandırmak, dağıtmak ve düzenlemek için modüller kullanır. Ansible’da yerleşik yaklaşık 750 + modül vardır.
  4. Verimli(Efficient) – Ansible’ın çalışması için gerekli sunucu, arka plan programı veya veri tabanı yoktur.
  5. Özellikler (Features) – Ansible bir çok özellikle birlikte gelir ve İşletim sistemlerini, BT Altyapısını, ağları, sunucuları ve hizmetleri çok daha kısa sürede yönetmek için kullanılabilir.
  6. Güvenli ve tutarlı (Secure and consistent) – Ansible, SSH ve Python kullandığından çok güvenlidir ve işlemler kusursuzdur.
  7. Güvenilir (Reliable) – Ansible Playbook, programlar veya modüller yazmak için kullanılabilir ve herhangi bir olumsuzluk olmaksızın BT’yi yönetmek için kullanılabilir.
  8. Performans (Performance)– Ansible’ın performansı mükemmel ve çok az gecikmelere sahip.
  9. Düşük Yük (Low Overhead)– Aracısız olduğu ve herhangi bir sunucu, arka plan programı veya veri tabanı gerektirmediği için sistemlerde çok fazla alan sağlayabilir ve dağıtım açısından düşük ek yüke sahiptir.
  10. Basitlik (Simple) – Kullanımı çok basittir ve YAML tarafından desteklenir.

Ansible’ın Dezavantajları

Ansible’ın farklı avantajlarına net bir şekilde baktıktan sonra, onunla karşılaşabileceğiniz aksiliklere odaklanalım.

  • Yetersiz Kullanıcı Arayüzü

Ansible’ın dezavantajlarına ilk giriş, ham kullanıcı arayüzüdür. Ansible başlangıçta yalnızca bir komut satırı aracıydı. Ansible’ın bir kullanıcı arabirimi oluşturmaya yönelik ilk çabası, AWX grafik kullanıcı arabirimiydi. Kullanıcı arabirimindeki diğer bileşen, daha kolay altyapı yönetimi için tasarlanmış REST uç noktasıydı.Daha sonra, AWX, bir web yönetimi kullanıcı arayüzü olan Ansible Tower’a dönüştü. Ansible Tower, görsel yönetim özellikleri ve ekip tabanlı bir iş akışı aracı sunar. Ancak, Ansible Tower önemli iyileştirmeler gerektiriyor. Örneğin, komut satırı aracılığıyla tamamlanabilen görevlerin neredeyse %85’i UI aracılığıyla gerçekleştirilebilir.

Ayrıca, kullanıcı arayüzünden kaynaklanan Ansible dezavantajlarından başka bir sözle karşılaşabilirsiniz. GUI ve komut satırı arasındaki senkronizasyon hatası, çakışan sorgu sonuçlarına yol açabilir. Genel olarak, Ansible Tower hala geliştirme aşamasında ve komut satırı arayüzü gibi her şeyi yapamadı.

  • Herhangi Bir Destek Kavramının Eksikliği

Ansible’ın dezavantajları arasında öne çıkan bir diğer husus, herhangi bir destek kavramının olmamasıdır. Ansible, Puppet gibi diğer otomasyon araçları gibi herhangi bir durum kavramına sahip değildir. Ansible, bağımlılıkları izlemez ve yalnızca sıralı görevleri yürütür ve görevler bittiğinde, başarısız olduğunda veya herhangi bir hata geldiğinde durur.

Bu özellikler, otomasyon aracının sipariş için ayrıntılı bir katalog tutmasını isteyen kullanıcılar için ideal değildir. Katalog, çevresel koşullarda herhangi bir değişiklik etkisi olmaksızın belirli bir duruma ulaşmaya yardımcı olabilir. Ancak, Ansible bundan yoksundur ve müthiş bir dezavantaj sunar.

  • Sınırlı Windows Desteği

Ansible dezavantajları arasında bir sonraki öne çıkan söz, yarı yapılandırılmış Windows desteğidir. Ansible sürüm 1.7, Windows’un yanı sıra Linux/Unix düğümlerini de destekler. Windows durumunda Ansible, SSH yerine yerel bir PowerShell uzaktan iletişim kullanır. Sonuç olarak, Windows ana bilgisayarlarının yönetimi için bir Linux kontrol makinesi zorunludur. Ansible’da Windows için sınırlı destek, yapılandırma yönetimi ve otomasyon aracıyla ilgili en büyük dezavantajlardan birini sunuyor.

  • Ansible’ın Deneyimi yok

Kurumsal destek deneyiminin olmaması da Ansible’ın çekiciliğini azaltıyor. Ansible, Puppet ve Chef gibi rakipleri gibi büyük işletmelerle tam teşekküllü bir çalışma deneyimine sahip değildir. (Chef vs Puppet ). Ansible, kurumsal düzeyde genişletilmiş destek seçeneklerine sahip olduğunu iddia etse de, sınırlı pratik deneyim, Ansible’ın hesap verebilirliğini azaltır.

  • Ansible Piyasada Yeni

Son olarak, Ansible avantajları ve dezavantajları bölümündeki en yaygın girdilerden birini, Ansible’ın belirgin bir gerilemesi olarak not edebilirsiniz. Ansible, tanınmış rakiplerinin aksine pazarda yenidir. Sonuç olarak, geniş bir geliştirici veya kullanıcı topluluğuna sahip değildir. Ayrıca, Ansible’ın pazardaki yeni varlığı, keşfedilmemiş hataların, yazılım sorunlarının ve uç senaryoların olasılıklarını ima ediyor.

Ansible İle Ne Yapılabilir?

  • Konfigürasyon Yönetimi (Configuration Management ) – Kurumsal donanım ve yazılım bilgileri ayrıntılı olarak kaydedilir ve güncellenir, böylece ürün performansının tutarlılığı korunur.
  • Uygulama Dağıtımı (Application Deployment) – Uygulamaları Ansible kullanarak tanımladığınızda ve yönettiğinizde, uygulamalar Geliştirmeden Üretime Ansible’da yönetilebilir.
  • Orkestrasyon (Orchestration) – Bir bütün olarak ve konfigürasyonların nasıl etkileşime girdiğini yönetmek için kullanırız.
  • Güvenlik ve Uyumluluk (Security and Compliance) – Politika Ansible’da tanımlandığında, altyapı genelinde geniş güvenlik politikası dağıtılabilir
  • Sağlama (Provisioning) – Süreci otomatikleştirmemize ve yönetmemize yardımcı olur

Ansible Architecture’a genel bakış

Ansible mimarisi aşağıdaki şemada gösterilmiştir.

 

 

Ansible Orchestration motoru, Ansible aracının merkezidir.

  • Süreci yapılandırmak, yönetmek, otomatikleştirmek ve düzenlemek için yazılmış bir Envanter tablosu, API, Eklentiler ve modüllerden oluşur.
  • Ağ oluşturmayı ana bilgisayarları veya sunucuları, işletim sistemlerini yönetmek ve güvenliği yönetmek için Playbook yazılımından, genel/özel buluttan ve yapılandırma yönetimi veritabanlarından girdi alabilir.

Sonuç

Bu makalede, Ansible’ın faydalarına, nasıl çalıştığına ve neler yapabileceğine, mimarisine, neler yapılabileceğine, dezavantajlarına ve hangi durumlar da tercih edildiğini anlatmaya çalıştım. Umarım bu makalem Ansible ile tanışmak isteyenler için güzel bir başlangıç olması dileğiyle. 🙂

Okuduğunuz için teşekkürler!

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*