Manage parallelism
1. Strategy nedir?
linear
✔️
Aynı task’ı tüm hostlarda paralel çalıştırır; herkes bitmeden sonraki task’a geçmez.
free
❌
Her host kendi yolunda ilerler; bir task bitince beklemez, direkt sıradakine geçer.
serial
(linear’ın ayarı)
Kaç hostluk “batch” işleneceğini söyler; örneğin serial: 3
→ üçer üçer.
2. Linear (default) – “Hep beraber, adım adım”
- name: Deploy web app
hosts: webservers
tasks:
- name: Install dependencies
# ...
- name: Run webserver
# ...
Aynı task eş zamanlı tüm hostlarda çalışır.
En yavaş host, “barajı geçen son atlet” olur; diğerleri onu bekler.
Avantaj: Tutarlı ilerler, aynı adımda herkes aynı durumda.
Dezavantaj: Yavaş host = tüm playbook yavaşlar.
3. Free – “Herkes kendi temposunda”
- hosts: webservers
strategy: free
tasks:
- name: Install dependencies
# ...
- name: Run webserver
# ...
Host A birinci task’ı bitirince hemen ikincisine geçer; Host B hâlâ birincide olabilir.
Avantaj: Toplam süre kısalabilir.
Risk: Adımlar arasında bağımlılık varsa (örneğin DB henüz yokken app servis başlarsa) sorun çıkar.
4. Serial – “Parça parça ilerle”
- hosts: webservers # diyelim 10 host
serial: 3 # 3’lük batch'ler
tasks:
- name: Deploy app
# ...
Çalışma akışı:
İlk 3 host üzerinde tüm task’lar biter.
Sonra sonraki 3 host, … derken 10 host tamamlanır.
Kullanım alanı:
Prod cluster’da “az az güncelle, bak bir şey kırılıyor mu?”
Network/load azaltmak.
Dinamik seri: İki değer verebilirsin: serial: [2, 4]
İlk tur 2 host, başarılıysa her turda 4 host şeklinde büyür. Yükseltme rollout’larında işe yarar.
5. Parallel sürecin motoru: Forks
Ansible, her host için bir fork (alt proses) açar.
Default:
forks = 5
(/etc/ansible/ansible.cfg
içinde).100 host hedeflesen bile; ilk 5’i biter → sonraki 5, vs.
Değiştirme yolları
Geçici:
ansible-playbook -f 20 site.yml
Kalıcı:
forks = 20
satırınıansible.cfg
altına ekle.
Kaynak güçlü, ağ hızlıysa arttır; aksi hâlde SSH bağlantı sayısı yüzünden CPU/net boğulur.
6. Strateji + Serial + Forks nasıl birleşir?
serial
batch boyutunu sınırlar.forks
ise aynı anda kaç host’la konuşabileceğini sınırlar. Örnek:
forks = 10
serial: 20
Inventoride 100 host var ➜ Her batch’te 20 host işlenecek, ama aynı anda maksimum 10’u aktif olacak.
Canlı sistem, riskli update
serial: 1
+ strategy: linear
↗ sırayla güncelle, sorun çıkarsa hemen fark et.
Lab ortamı, hız önemli
strategy: free
, forks
’u yükselt.
DB kurulum + app kurulum tek play’de
DB blok’u bitmeden app başlatmak tehlikeli → linear
kullan ya da iki ayrı play yaz.
Özel ihtiyaç
Python ile strategy plugin yazarak tamamen kendi akışını oluşturabilirsin (ileri seviye).
Last updated
Was this helpful?