Ansible
- Okunuşu
- ensıbıl
Kısaca
Ansible, YAML playbook'larını ajan kurmadan SSH üzerinden çalıştırarak sunucuları yapılandıran ve uygulama dağıtan açık kaynaklı bir otomasyon aracıdır.
Ansible nedir?
Ansible, 2012'de Michael DeHaan tarafından geliştirildi ve 2015'ten bu yana Red Hat'in bir parçası. İnsanların eskiden sunuculara tek tek bağlanarak yaptığı işleri otomatikleştirir: paket kurmak, yapılandırma dosyalarını düzenlemek, kullanıcı oluşturmak, servisleri yeniden başlatmak ve bir uygulamanın yeni sürümlerini dağıtmak.
İş, host grupları üzerinde çalıştırılacak görevleri listeleyen YAML dosyaları olan playbook'larda tarif edilir. Her görev bir modül çağırır: paket kurmak için apt, dosya yerleştirmek için copy, bir servisi yeniden başlatmak için service gibi. Yönetilecek makineler bir envanterde (inventory) listelenir; Ansible onlara SSH ya da Windows için WinRM üzerinden bağlanır, böylece makinelere Python dışında hiçbir şey kurmak gerekmez.
Modüllerin çoğu idempotent'tir: önce mevcut durumu denetler ve yalnızca bir şey farklıysa işlem yapar. Bu yüzden bir playbook'u iki kez çalıştırmak sunucuları aynı durumda bırakır; bu da bir makine filosunu tutarlı tutmak için playbook'u tekrar tekrar uygulamayı güvenli kılar. Roller, yeniden kullanılabilir görev setlerini paketler; Ansible Galaxy de topluluğun hazırladığı rolleri ve koleksiyonları paylaşır.
Sık yapılan bir yanlış, Ansible ile Terraform'un rakip olduğu düşüncesidir. Terraform genellikle altyapının kendisini oluşturmak için, Ansible ise makinelerde çalışanları yapılandırmak için kullanılır; konteynerler ve değiştirilemez imajlar da bu işin bir kısmının yerini almıştır. Puppet ya da Chef gibi araçların aksine Ansible, her sunucuda bir ajan çalıştırmak yerine değişiklikleri bir kontrol makinesinden iter.
Önemli noktalar
- Ansible, sunucu yapılandırmasını ve uygulama dağıtımını otomatikleştirir.
- Görevler YAML playbook'larında yazılır ve bir host envanterine karşı çalıştırılır.
- Ajansızdır: SSH ile bağlanır ve host'larda yalnızca Python'a ihtiyaç duyar.
- İdempotent modüller, bir playbook'u tekrar tekrar çalıştırmayı güvenli kılar.
- Genellikle Terraform gibi araçların oluşturduğu makineleri yapılandırır.
Örnek
- name: Set up web servers
hosts: web
become: true
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
update_cache: true
- name: Make sure nginx is running
ansible.builtin.service:
name: nginx
state: started
enabled: true
# Run with: ansible-playbook -i inventory.ini site.ymlSık sorulan sorular
Ansible her sunucuda bir ajan gerektirir mi?
Hayır. Ansible ajansızdır: bir kontrol makinesinden SSH (Windows'ta WinRM) ile bağlanır ve modüllerini orada çalıştırır; yönetilen host'larda yalnızca Python gerekir.
Ansible playbook nedir?
Her biri bir host grubunu paket kurma, dosya kopyalama ve servis yeniden başlatma gibi bir dizi göreve eşleyen play'leri listeleyen bir YAML dosyasıdır.
Ansible'da idempotent ne demek?
Aynı görevi iki kez çalıştırmanın bir kez çalıştırmakla aynı sonucu vermesi demektir. Paket kuran bir modül, paket zaten kuruluysa hiçbir şey yapmaz.
Sık karşılaştırılanlar
İlgili sayfalar
- Yapılandırma YönetimiDevOps ve Bulut, s. 53Yapılandırma yönetimi, sunucuların ve yazılımın istenen durumunu kodla tanımlama ve araçlarla bunu otomatik olarak uygulayıp koruma pratiğidir.
- Kod Olarak AltyapıDevOps ve Bulut, s. 27Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.
- TerraformDevOps ve Bulut, s. 51Terraform, kod olarak altyapı aracıdır; bulut kaynaklarını yapılandırma dosyalarında tarif edersiniz, tek komut onları buna göre oluşturur ya da günceller.
- SSHAğlar, s. 27SSH, uzak bilgisayarlarda güvenle oturum açıp komut çalıştırmaya yarayan, iki makine arasındaki tüm trafiği şifreleyen kriptografik bir ağ protokolüdür.
- YAMLDevOps ve Bulut, s. 52YAML, parantez yerine girinti kullanan, insanın okuyabileceği bir veri biçimidir; DevOps araçlarında ve CI/CD pipeline'larında yapılandırma için yaygındır.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin