Manage parallelism

1. Strategy nedir?

Strategy
Varsayılan mı?
Ne yapar?

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ışı:

  1. İlk 3 host üzerinde tüm task’lar biter.

  2. 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ı

  1. Geçici: ansible-playbook -f 20 site.yml

  2. 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.

Durum
Öneri

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?