İç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.