Dünyanın en detaylı ücretsiz FDE + DevOps kütüphanesi: 140 üzeri ders, 70 üzeri lab ve 80 uzun yazı, İngilizce ve Türkçe. Öğrenmeye başla →

DevOps Foundations · Modül 3: Bash ve Python ile güvenli otomasyon

Idempotent Betikler

Her betik iki kez çalışır: biri seninle, biri yeniden deneme, hat tekrarı veya meslektaşla. Bu ders ikinci çalışmayı yapısı gereği güvenli yapar.

10 dk okuma

Kazanımlar

  • Idempotency kavramını güvenli tekrar çalışabilirlik olarak tanımlayıp doğrudan test etmek
  • Ekleyen değil yakınsayan kurulum betikleri yazmak
  • Kontrol ile değişikliği ayırıp kuru çalışmaları dürüst tutmak
  • Tekrar çalışmaların istisna değil normal durum olduğunu açıklamak

Neden önemli

Kurulum betiği aynı güvenlik duvarı kuralını ekler, aynı satırı aynı konfigürasyona yazar, aynı kullanıcıyı her çalışta oluşturur. İlk çalış mükemmeldir; üçüncü, ayrıştırmayı bozan yinelemeler, her paketi yavaşlatan üçe katlanmış kurallar ve dağıtımı düşüren kullanıcı oluşturma hatası üretir. Tekrar çalışmalar kaza değildir. Hatlar yeniden dener, insanlar yeniden tıklar, konfigürasyon araçları mutabakat yapar. Tekrarı güvensiz betik kullanımı güvensizdir.

Kavramlar

İşlem, ikinci çalışta hiçbir şeyi değiştirmiyorsa idempotenttir. Kalıp kontrol-sonra-değişikliktir; kontrol betiğin kendi yazdığı bayrak dosyasını değil gerçek durumu okur: eklemeden önce satırı grep -q ile ara, mkdir -p öncesi test -d (zaten idempotenttir), useradd öncesi kullanıcı listesini sorgula. Bayrak dosyaları elle değişiklikten sonra yalan söyler; durum kontrolleri söylemez.

Yakınsama adımlardan üstündür. A sonra B yap yerine son durumu bildir ve ona yürü: satır tam bir kez mevcut, servis çalışıyor, paket kurulu. Paket yöneticileri ve mkdir -p zaten böyle düşünür; betiğin de öyle düşünmelidir. Tam yakınsama ağırsa her adımı bağımsız tekrarlanabilir yap ve sırala ki herhangi bir arızadan sonraki tekrar, yinelemek yerine kaldığı yerden sürsün.

Kontrolü değişiklikten ayır ki --check veya --dry-run kipleri dürüst kalsın. Her eylemi önce ne yapacağını raporlayan, sonra kuru çalışta değilse yapan işlev yap. Planını gösteremeyen kuru çalışma süstür; gerçek çalışmadan farklı plan hiç yoktan beterdir. Tekrarları ilk çalışmalar gibi test et: çalıştır, yeniden çalıştır, sistem durumunu karşılaştır, boş fark bekle.

Uygulamalı örnek

Konfigürasyon satırı ekleme, güvenli hali:

#!/usr/bin/env bash set -euo pipefail line="max_connections = 200" file="/tmp/dlab-svc.conf" dry_run="${1:-}" if grep -qxF "$line" "$file" 2>/dev/null; then echo "present: nothing to do" elif [ "$dry_run" = "--check" ]; then echo "would append: $line" else printf '%s\n' "$line" >> "$file" echo "appended: $line" fi

Beklenen okuma: grep -qxF tam satırı eşleştirir (sabit dize için F, tüm satır için x; max_connections = 20 değeri 200 ile eşleşmez), eksik dosyalar hata yerine yok sayılır, --check yazmadan raporlar, ikinci çalış present basar ve hiçbir şeyi değiştirmez. L08 labı bu kalıbı tüm kurulum betiğine ölçekler; ikinci çalışın işlemsizliğini testlerle kanıtlatır.

Yaygın yanlış hamle

Betiğin kendi oluşturduğu işaret dosyasıyla korumak. Biri gerçek değişikliği silse, elle düzenlese veya ilk çalışma işareti yazdıktan sonra yarıda düşse bile ikinci çalışı işlemsiz yapar. İşaretler betiğin çalıştığını kaydeder, durumun tuttuğunu değil. Durumu kontrol et, işareti asla.

Lab ve sonraki adım

L08 labı ikinci çalışı hiçbir şeyi değiştirmeyen kurulum betiği ister; durum karşılaştırmalarıyla kanıtlanır, --check kipli. Sırada 3. ders: betiklerin tükettiği veri; JSON ve API'ler.

Mini kontrol

4 soruluk isteğe bağlı öz kontrol. Yanıtlar cihazından çıkmaz, saklanmaz ve hiçbir değerlendirmeye sayılmaz.

Ders geri bildirimi

Henüz yayında geri bildirim yok.

Geri bildirim yazmak için giriş yap ve dersi tamamla.

Kaynaklar

Alıştırma

Ekleyen, kuran veya oluşturan bir betik seç. /tmp denemelerine karşı iki kez çalıştır, her çalış sonrası durumu karşılaştır; ikinci fark boşalana kadar yeniden yaz. İki farkı da göster.

Geçme kriterleri

İlk çalış farkı amaçlanan değişikliği gösteriyor; ikinci çalış farkı boş; kontrol gerçek durumu okuyor (işaret dosyası yok).

İlerlemeni kaydetmek için giriş yapÜcretsiz hesap: yalnızca ders ilerlemen ve quiz sonuçların saklanır.