Logo GH

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ə retry.
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ə retry-lər.
Ə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 və 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.