Ops otomasyonu ve komut dosyaları
1) Neden işlemleri otomatikleştirin
MTTR/insan hatasını azaltır, salınımları ve reaksiyonları hızlandırır.
Eylemleri tekrarlanabilir ve denetlenebilir hale getirir (uyumluluk).
Mühendislerin rutin değil, iyileştirme için zamanlarını serbest bırakır.
2) Temel ilkeler
1. Idempotency: tekrar çalıştırın - aynı sonuç.
2. Güvenlik korkulukları: kuru çalışma, onaylar, sınırlar, otomatik geri dönüşler.
3. Gözlemlenebilirlik: Günlükler/metrikler/izler her bir komut dosyasına/boru hattına yerleştirilir.
4. Yapılandırma> koddaki sabitler: hepsi parametreler/tezahürler yoluyla.
5. GitOps/Docs-as-Code: işlem kodu sürümlendirilir, gözden geçirilir, test edilir.
6. Küçük adımlar: kanarya lobları, partiler, bütçelerle geri dönüşler.
7. Repo'da sır yok: sadece gizli depolar aracılığıyla.
3) Otomasyon görev sınıfları
İyileştirme ve olaylar: geri dönüşler, sağlayıcı anahtarları, bozulma özelliği bayrakları.
Planlanmış çalışma: sertifikaların/anahtarların döndürülmesi, veritabanı geçişleri (genişlet, göç et, kontrat).
Altyapı yönetimi: IaC (Terraform), konfigürasyonlar (Ansible), K8s manifestoları.
Veri ve DataOps: arka dolgular, ETL, kalite doğrulama.
Xaoc/DR egzersizleri: güvenlik kapıları ile arızaların simülasyonu.
4) Bir araç nasıl seçilir
Bash - kısa tutkal senaryoları, CLI orkestrasyonu.
Python - mantık/SDK, retrai, API, JSON/YAML ile çalışır.
Ansible - idempotent konfigürasyon, ajanlara gerek yok.
Terraform bildirimsel bir altyapıdır.
Kubernetes Jobs/CronJobs - toplu görevler/zamanlama.
Argo/Airflow - bağımlı DAG'ler ve orkestrasyon.
ChatOps - denetim ile sohbetten güvenli başlatma.
5) Otomasyon mimarisi (referans)
CLI/ChatOps - Denetleyici (GitOps/orkestratör) - Sanatçılar (Ansible/Terraform/K8s İşi) - İzleme (günlükler/metrikler/yollar) - Denetim/biletleme - Yerleştirme eserleri (kanıt).
6) Idempotency ve durum yönetimi
"Kontrol et, sonra değiştir": algıla-sonra-harekete geç (zaten tamamsa - hiçbir şey yapma).
Uzun prosedürler için "durum/kilit" saklayın.
Prosedürleri tekrarlanan çalışma olasılığı ile atomik adımlara bölün.
7) Hatalar, geri çekilmeler ve geri dönüşler
Üstel gecikme ve titreme ile Retrai.
Çalışma süresi bütçesi (görev başına toplam SLA).
Geri dönüşler ve devre kesici her zaman sağlanır.
Açık dönüş kodları ve yapılandırılmış hatalar.
8) Güvenlik ve sırlar
RBAC/ABAC, minimum ayrıcalıklar, geçici belirteçler (JIT/JEA).
Vault/KMS/Cloud Secret Manager'ın Sırları; Anahtarlar döndürülmüş.
"Görevlerin ayrılması": Yazan, prod'u onaylayan ve başlatan kişi değildir.
Denetim günlüğü: kim/ne zaman/ne/ne ile sonuç.
9) GitOps и ChatOps
PR> Testler> İnceleme> Birleştirme> Ortamlara otomatik tanıtım.
Sohbetteki komutlar (örneğin,'/ops deploy checkout --canary 5 % ') boru hatlarına neden olur; Botlar, panolara kanıt ve bağlantılar uygular.
10) Planlama ve orkestrasyon
Bağımlılıkları ve son tarihleri olan CronJobs/DAG.
Rekabet: Göreve bağlı olarak 'Yasakla', 'Değiştir', 'İzin Ver' (K8s).
Prod'u "yememek" için kaynak politikaları/kotaları.
11) Otomasyonun gözlemlenebilirliği
Metrikler: başarı/hata, süre, retrays, etkilenen nesneler.
Günlükler: yapılandırılmış, korelasyon kimliği, hata üzerine kırmızı çizgi.
İzler: Dağıtılmış izlerde uzun işlemlerin adımları görülebilir.
Uyarılar: belirtilere (SLO) ve teknik ölçümlere göre (son tarih, hata yüzdesi).
12) Test ve simülasyonlar
Mantık ve yapay ayrıştırıcıların birim testleri.
Sandbox ve kanaryada entegrasyon testleri.
"Simülatörler" (kuru çalışma + kukla sağlayıcıları), gerçek senaryoları tekrarlayın.
Alıştırmalar: net hedefler, güvenlik kapıları, AAR - RCA - CAPA.
13) Kod şablonları
Bash (korkuluklu iskelet)
bash
!/usr/bin/env bash set -Eeuo pipefail trap 'echo "[ERR] line $LINENO"; exit 1' ERR
log(){ printf '%s %s\n' "$(date -Iseconds)" "$"; }
DRY=${DRY_RUN--true}
ensure_dep(){ command -v "$1" >/dev/null { echo "need $1"; exit 2; }; }
apply_change(){
local target="$1"
if [[ "$DRY" == "true" ]]; then log "[DRY] would update $target"
else kubectl apply -f "$target"
fi
}
main(){
ensure_dep kubectl for f in manifests/.yaml; do apply_change "$f"
done log "done"
}
main "$@"
Python (Retrai + Idempotency)
python import argparse, time, json, sys from pathlib import Path import requests
def with_retries(fn, attempts=5, base=0. 2):
for i in range(attempts):
try:
return fn()
except Exception as e:
sleep = base (2i)
time. sleep(sleep)
raise
def already_done(marker):
return Path(marker). exists()
def mark_done(marker):
Path(marker). write_text("ok")
def main():
ap = argparse. ArgumentParser()
ap. add_argument("--endpoint", required=True)
ap. add_argument("--marker", default="/tmp/op. marker")
args = ap. parse_args()
if already_done(args. marker):
print("idempotent: nothing to do"); return
def call():
r = requests. post(args. endpoint, json={"action":"rotate"})
r. raise_for_status()
return r. json()
resp = with_retries(call)
print(json. dumps(resp))
mark_done(args. marker)
if __name__ == "__main__":
sys. exit(main())
Ansible (idempotent görev)
yaml
- hosts: web become: true tasks:
- name: Ensure nginx present and enabled ansible. builtin. package:
name: nginx state: present
- name: Deploy config ansible. builtin. template:
src: nginx. conf. j2 dest: /etc/nginx/nginx. conf mode: '0644'
notify: restart nginx handlers:
- name: restart nginx ansible. builtin. service:
name: nginx state: restarted
Kubernetes CronJob (planlı rotasyon)
yaml apiVersion: batch/v1 kind: CronJob metadata:
name: cert-rotate spec:
schedule: "0 3 "
concurrencyPolicy: Forbid jobTemplate:
spec:
template:
spec:
serviceAccountName: ops-automation restartPolicy: OnFailure containers:
- name: rotator image: registry/ops/rotator:1. 2. 3 args: ["--rotate", "--budget-ms=60000"]
envFrom:
- secretRef: { name: rotator-secrets }
GitHub Eylemleri (ChatOps tetikleyici)
yaml name: ops-deploy on:
workflow_dispatch:
inputs:
service: {required: true}
canary: {required: false, default: "5"}
jobs:
deploy:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- run:./scripts/deploy. sh "${{ inputs. service }}" --canary "${{ inputs. canary }}"
14) Uygulama kontrol listesi
- Her işlem için bir araç seçilir ve bir çalışma kitabı tanımlanır.
- Kuru çalıştırma, onaylar ve sınırlar (korkuluklar) vardır.
- Günlükler yapılandırılır, metrikler ve uyarılar bağlanır.
- Depolama sırlar, minimal ve geçici erişim.
- Testler (birim/entegrasyon/kanarya) ve simülasyonlar gerçekleştirildi.
- GitOps/PR incelemeleri gereklidir, bir denetim vardır.
- Geri alma planı ve başarı kriterleri belgelenmiştir.
- Otomasyon SLO/hata bütçelerine bağlıdır.
15) Anti-desenler
Idempotency ve geri dönüş olmadan komut dosyaları.
"Koddaki sırlar", süperadmin her şeyi açıklar.
Denetim olmadan satışlarda manuel düzenlemeler.
Bildirimsel IaC yerine Chunky Bash Hayvanat Bahçesi.
Kodda "korunan" parametreler - yeniden kullanım yok.
Kuru çalıştırma/kanarya yok - büyük patlamalar.
Yapı ve korelasyon olmadan "insanlar için" günlükleri.
16) Ops otomasyon olgunluk metrikleri
Kapsam: Otomasyon ve runbook işlemlerinin %'si.
Başarı oranı/Otomatik görevlerin yeniden deneme oranı.
Yürütme zamanı ve zamanında.
Otomasyon öncesi/sonrası hata oranını değiştirin.
Denetim-Bütünlük: Tam kanıtlarla operasyonların %'si.
Güvenlik: Anahtar/sertifika döndürme süresi, JIT erişimlerinin paylaşımı.
17) Alt satır
Ops otomasyonu bir dizi farklı komut dosyası değil, bir sistemdir: idempotent eylemler, güvenli korkuluklar, gözlemlenebilirlik, sırlar ve kontrol altında erişim, GitOps/ChatOps, testler ve alıştırmalar. Böyle bir sistemde, işlemler hızlı, öngörülebilir ve denetlenebilir hale gelir - ve işletme istikrarlı sürümler ve düşük bir olay riski alır.