GH GambleHub

Ops-avtomatlaşdırma və skriptlər

1) Niyə əməliyyatları avtomatlaşdırmaq

MTTR/insan səhvlərini azaldır, buraxılışları və reaksiyaları sürətləndirir.
Hərəkətləri təkrar və audit edir (komplayens).
Təkmilləşdirmə üçün mühəndislərin vaxtını azad edir, rutin deyil.

2) Əsas prinsiplər

1. İdempotentlik: yenidən başlanğıc → eyni nəticə.
2. Təhlükəsiz məhəccərlər: dry-run, təsdiqlər, limitlər, avtomatik geri çəkilmələr.
3. Müşahidə: log/metrik/treys hər skript/paypline daxili.
4. Konfiqurasiya> sabitlər kodda: bütün parametrlər/manifestlər vasitəsilə.
5. GitOps/Docs-as-Code: əməliyyat kodu versiyası, review, test.
6. Kiçik addımlar: kanarya payları, batches, büdcələr ilə retrai.
7. Repoda heç bir sirr yoxdur: yalnız gizli saxlama vasitəsilə.

3) Avtomatlaşdırma tapşırıqları sinifləri

Remediasiya və insidentlər: geri çəkilmə, provayderlərin dəyişdirilməsi, deqradasiya fiqa bayraqları.
Planlı işlər: sertifikatların/açarların rotasiyası, DB miqrasiyası (expand → migrate → contract).
Infrastrukturun idarə edilməsi: IaC (Terraform), konfiqurasiyalar (Ansible), K8s manifestlər.
DataOps və DataOps: backfills, ETL, keyfiyyət validasiyası.
Xaoc/DR təlimləri: təhlükəsizlik qapıları ilə uğursuzluq simulyasiyaları.

4) Alət seçmək üçün necə

Bash - qısa glue skriptləri, CLI orkestrasiyası.
Python - məntiq/SDK, retralar, API, JSON/YAML ilə iş.
Ansible - idempotent konfiqurasiyası, agentlərə ehtiyac yoxdur.
Terraform - deklarativ infrastruktur.
Kubernetes Jobs/CronJobs - paket tapşırıqları/planlaşdırma.
Argo/Airflow - asılı DAG və orkestr.
ChatOps - audit chat təhlükəsiz başlanğıc.

5) Avtomatika arxitekturası (istinad)

CLI/ChatOps → Controller (GitOps/orkestrator) → İfaçılar (Ansible/Terraform/K8s Job) → Monitorinq (log/metrika/treys) → Audit/tiketinq → Doc-artefaktlar (evidence).

6) İdempotentlik və vəziyyətin idarə edilməsi

«Yoxlayın, sonra dəyişdirin»: detect-then-act (əgər artıq OK varsa - heç nə etməyin).
Uzun prosedurlar üçün «icra nişanları» (state/lock) saxlayın.
Prosedurları atomik addımlara bölün.

7) Səhvlər, retrajlar və geri dönüşlər

Eksponensial gecikmə və jitter ilə retrailer.
Əməliyyat vaxtının büdcəsi (tapşırıq üçün ümumi SLA).
Geri dönüş və «stop düyməsi» (circuit breaker) həmişə təmin edilir.
Açıq qaytarma kodları və strukturlaşdırılmış səhvlər.

8) Təhlükəsizlik və sirləri

RBAC/ABAC, minimum imtiyazlar, müvəqqəti tokenlər (JIT/JEA).
Vault/KMS/Cloud Secret Manager-dən sirlər; açarları fırlanır.
«Vəzifələrin ayrılması»: yazan - təsdiq edən və prodda işə salan deyil.
Audit-jurnal: kim/nə/nə/hansı nəticə ilə.

9) GitOps и ChatOps

PR → testlər → review → merj → çərşənbə avtomatik promosyon.
Chat komandaları (məsələn, '/ops deploy checkout --canary 5% ') paylaynları çağırır; botlar evidence tətbiq və dashboard links.

10) Planlaşdırma və orkestr

CronJobs/DAG asılılıqları və müddətləri ilə.
Rəqabət qabiliyyəti: 'Forbid', 'Replace', 'Allow' (K8s) vəzifəsindən asılı olaraq.
Resources/kvota siyasəti «yemək» prod deyil.

11) Avtomatlaşdırma müşahidə

Metriklər: uğur/səhv, müddət, retralar, təsirlənmiş obyektlər.
Log: struktur, correlation-ID, qırmızı xəta.
Traces: paylanmış izlərdə uzun əməliyyatların addımları görünür.
Alertlər: simptomlara görə (SLO) və texniki metriklərə görə (son tarix,% səhvlər).

12) Test və simulyasiya

Vahid məntiq testləri və artefaktların parserləri.
Qum qutusunda və kanaryada inteqrasiya testləri.
«Trenajorlar» (dry-run + uydurma provayderlər), real ssenariləri replay.
Təlimlər: aydın hədəflər, təhlükəsizlik geytaları, AAR → RCA → CAPA.

13) Kod şablonları

Bash (məhəccərli skelet)

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 (retray + idempotent)

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 vəzifəsi)

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ı rotasiya)

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 Actions (ChatOps trigger)

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) Giriş çek siyahısı

  • Hər bir əməliyyat üçün bir vasitə seçilir və runbook təsvir olunur.
  • Dry-run, təsdiq və limitləri (məhəccərlər) var.
  • Log strukturlaşdırılmış, metrik və alert bağlıdır.
  • Saxlama sirləri, minimal və müvəqqəti giriş.
  • Testlər (birlik/inteqrasiya/kanarya) və simulyasiyalar həyata keçirilmişdir.
  • GitOps/PR review tələb olunur, audit var.
  • Geri dönüş planı və uğur meyarları sənədləşdirilmişdir.
  • Avtomatlaşdırma SLO/səhv büdcələrinə bağlıdır.

15) Anti-nümunələr

İdempotentlik və geri qaytarılmadan skriptlər.
«Kodda sirləri», hər şey üçün superadmin qeydlər.
Audit olmadan bir məhsulda əl düzəlişləri.
Parça Bash zoopark əvəzinə deklarativ IaC.
Koda «tikilmiş» parametrləri - təkrar istifadə yoxdur.
No dry-run/kanaryalar → böyük partlayışlar.
Strukturu və korelyasiyası olmayan «insanlar üçün» loqlar.

16) Ops-avtomatlaşdırma yetkinlik metrik

Coverage:% avtomatlaşdırma və runbook əməliyyatları.
Success rate/Retry rate avtomatik tapşırıqlar.
Mean time to execute (orta müddət) və on-time (müddət ərzində).
Change failure rate avtomatlaşdırmadan əvvəl/sonra.
Audit-tamlıq: tam evidence ilə əməliyyatların%.
Təhlükəsizlik: açar/sertifikatların rotasiya vaxtı, JIT giriş payı.

17) Yekun

Ops-avtomatlaşdırma ayrı-ayrı skriptlərin dəsti deyil, sistem: idempotent hərəkətləri, təhlükəsiz məhəccərlər, müşahidə, sirlər və nəzarət altındakı girişlər, GitOps/ChatOps, testlər və təlimlər. Belə bir sistemdə əməliyyatlar sürətli, proqnozlaşdırıla bilən və dinlənilə bilən olur - biznes isə sabit buraxılışlar və aşağı insident riskini alır.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.