İçeriğe geç
Ansible

Ansible; Red Hat tarafından desteklenen, agent’sız çalışan açık-kaynak konfigürasyon yönetimi ve otomasyon aracıdır. Hedef makineler üzerinde herhangi bir daemon çalıştırmaz; SSH (veya WinRM) üzerinden bağlanır, Python yorumlayıcısını kullanarak modülleri çalıştırır. Bu basitlik, Ansible’ı küçük ekiplerden hyperscale operasyonlara kadar her ölçekte kullanışlı kılar.

Konfigürasyon dili olarak YAML (playbook’lar) kullanılır; Jinja2 şablonları ile değişken ikamesi yapılır. Roller (rol = bir hizmetin tüm yapılandırma birimi) yeniden kullanımın temel yapı taşıdır ve Ansible Galaxy üzerinden topluluk paylaşımı vardır.

Mono’nun yaklaşımı

Mono ekibi, 800+ üretim sunucusunu Ansible ile yönetir. Standartlarımız:

  • Inventory: Statik YAML değil, dinamik inventory (cloud sağlayıcı API’sinden veya Netbox’tan).
  • Vault: Tüm sırlar ansible-vault ile şifrelenir; CI’da vault-password-file ile çözülür. Hassas üretim ortamlarında HashiCorp Vault ile entegrasyon.
  • Roller: Kurumsal “altın imaj” rolü → güvenlik sıkılaştırma, izleme ajanları, log shipping. Her hizmet için ayrı bir rol.
  • Test: Molecule ile rol başına Docker bazlı testler. CI pipeline her PR’da molecule test çalıştırır.
  • Yürütme: AWX/Ascender üzerinden zamanlanmış işler; sürüm güncellemeleri için canary node akışı.

Tipik kurulum şablonu

Yeni bir Linux sunucu Mono operasyonuna alındığında çalışan ilk playbook ~12 dakika sürer ve şu adımları içerir: hostname, /etc/hosts, sudo politikaları, kullanıcı/SSH anahtarı dağıtımı, NTP, log shipping (Fluent Bit → Loki), izleme ajanı (Zabbix/Wazuh), kernel parametreleri, paket güncellemeleri, otomatik güvenlik yamaları. Bu süreçte hiçbir manuel adım yoktur.

Yaygın sorunlar ve çözümler

  • Yavaş playbook’lar: gather_facts: false ile hızlandırın, gerekli olduğunda gather_subset kullanın. pipelining = True (ansible.cfg) %30 hız kazandırır.
  • become permission denied: Hedef host’ta sudo NOPASSWD veya become_password ile sırrın doğru iletilmesi gerekir.
  • Versiyon kayması: Ansible çekirdeği ile collection sürümlerini requirements.yml‘da pin’leyin.
  • Idempotency kırılması: Shell modülünü kullanmak yerine native modüller; gerekirse changed_when: false veya check_mode: false ile kontrol.

İlgili hizmetlerimiz

Sıkça sorulan sorular

Ansible mi Terraform mu?
Aynı kategoride değiller. Terraform/OpenTofu altyapıyı (sunucu, ağ, IAM) kurar; Ansible kurulan altyapı üzerinde yapılandırma yapar. Çoğu kurumda ikisi birlikte kullanılır: Terraform sunucu açar → Ansible işletim sistemini ve uygulamayı kurar.
Agent'sız olması bir kısıtlama mı?
Aksine, en büyük avantajı. SSH + Python yeterli. Yeni bir host’u günler içinde değil dakikalar içinde otomasyonun parçası yapabilirsiniz. Kapalı ağlarda bastion üzerinden de çalışır.
AWX/Ascender ne zaman gerekli?
5+ kişilik ekipler, rol bazlı erişim, iş zamanlaması, denetim kayıtları ve görsel iş akışı ihtiyaçlarında. Mono için varsayılan başlangıç: AWX (open-source) veya Ansible Automation Platform (Red Hat destekli).
Idempotency'i nasıl garanti ederiz?
Mümkün olan her yerde modül kullanın (ansible.builtin.copy, package, service); shell/command’tan kaçının. Eğer şart ise creates/removes argümanlarıyla durum kontrolü ekleyin. CI’da --check --diff ile dry-run zorunlu olsun.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.