GH GambleHub

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.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.