GH GambleHub

Ops-avtomatlashtirish va skriptlar

1) Nima uchun operatsiyalarni avtomatlashtirish

MTTR/inson xatolarini kamaytiradi, relizlar va reaktsiyalarni tezlashtiradi.
Harakatlarni takrorlanadigan va auditlanadigan qiladi (komplayens).
Muhandislar uchun kundalik ish emas, balki yaxshilanish uchun vaqt ajratadi.

2) Asosiy prinsiplar

1. Idempotentlik: qayta ishga tushirish → bir xil natija.
2. Xavfsiz panjara: dry-run, tasdiqlash, limitlar, avto-qaytish.
3. Kuzatish darajasi: loglar/metriklar/treyslar har bir skript/payplaynga oʻrnatilgan.
4. Kod tarkibidagi> konstantalar: hamma parametrlar/manifestlar orqali.
5. GitOps/Docs-as-Code: operatsiya kodi versiyalashtiriladi, revyuerlanadi, sinovdan oʻtkaziladi.
6. Kichik qadamlar: kanareya ulushlari, batchi, byudjet retraylari.
7. Repoda sirlarsiz: faqat secret-saqlash xonalari orqali.

3) Avtomatlashtirish vazifalari klasslari

Remediatsiya va hodisalar: orqaga qaytish, provayderlarni o’zgartirish, tanazzulning fich-bayroqlari.
Rejali ishlar: sertifikatlar/kalitlarni almashtirish, DB migratsiyasi (expand → migrate → contract).
Infratuzilmani boshqarish: IaC (Terraform), konfiguratsiyalar (Ansible), K8s manifestlar.
Maʼlumotlar va DataOps: backfill, ETL, sifat validatsiyasi.
Xaoc/DR mashqlari: Xavfsizlik darvozalari bilan nosozliklarni simulyatsiya qilish.

4) Asbobni qanday tanlash kerak

Bash - qisqa glue skriptlar, CLI orkestratsiyasi.
Python - mantiq/SDK, retralar, API, JSON/YAML bilan ishlash.
Ansible - idempotent konfiguratsiyasi, agentlar kerak emas.
Terraform - deklarativ infratuzilma.
Kubernetes Jobs/CronJobs - paketli vazifalar/rejalashtirish.
Argo/Airflow - bog’liq DAG-i va orkestr.
ChatOps - audit bilan chatdan xavfsiz ishga tushirish.

5) Avtomatika arxitekturasi (referens)

CLI/ChatOps → Nazoratchi (GitOps/orkestrator) → Ijrochilar (Ansible/Terraform/K8s Job) → Monitoring (loglar/metriklar/treyslar) → Audit/tiketing → Doc-artefaktlar (evidence).

6) Idempotentlik va holatni boshqarish

«Tekshiring, keyin o’zgartiring»: detect-then-act (agar allaqachon OK bo’lsa - hech narsa qilmang).
Uzoq protseduralar uchun «bajarish belgilari» (state/lock) ni saqlang.
Protseduralarni atom qadamlariga bo’ling.

7) Xatolar, retralar va orqaga qaytishlar

Eksponensial kechikish va jitter bilan retralar.
Operatsiya vaqtining byudjeti (vazifa uchun umumiy SLA).
Orqaga qaytish va to’xtash tugmasi (circuit breaker) har doim ko’zda tutilgan.
Aniq qaytarish kodlari va tuzilgan xatolar.

8) Xavfsizlik va sirlar

RBAC/ABAC, minimal imtiyozlar, vaqtinchalik tokenlar (JIT/JEA).
Vault/KMS/Cloud Secret Manager dan sirlar; kalitlar rotatsiya qilinadi.
«Vazifalarni ajratish»: kim yozsa, uni maʼqullaydigan va uni ishlab chiqaradigan odam emas.
Audit-jurnal: kim/qachon/nima/qanday natija bilan.

9) GitOps и ChatOps

PR → testlar → revyu → merj → avto-promosyon.
Chat buyruqlari (masalan, ’/ops deploy checkout --canary 5%’) payplaynlarni chaqiradi; botlar evidence va dashbordlarga havolalarni qo’llaydi.

10) Rejalashtirish va orkestrlash

CronJobs/DAG bogʻliqlik va muddatlar bilan.
Raqobatbardoshlik: vazifasiga qarab’Forbid’,’Replace’,’Allow’(K8s).
Resurslar/kvotalar siyosati.

11) Avtomatika kuzatilishi

Metrika: muvaffaqiyat/xato, davomiylik, retralar, ta’sirlangan obyektlar.
Loglar: tuzilgan, correlation-ID, xatodagi qizil satr.
Treyslar: uzoq operatsiyalarning qadamlari taqsimlangan trassalarda ko’rinadi.
Alertlar: simptomlar (SLO) va texnik metriklar (muddat, xatolar%) bo’yicha.

12) Test va simulyatsiya

Artefaktlar mantig’i va parserlarining yunit-testlari.
Qum qutisi va kanareykada integratsiya testlari.
«Trenajyorlar» (dry-run + soxta provayderlar), real ssenariylarni replay qilish.
Mashqlar: aniq maqsadlar, xavfsizlik geytlari, AAR → RCA → CAPA.

13) Kod namunalari

Bash (panjarali 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 (retrai + idempotentlik)

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 vazifa)

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 (rejali rotatsiya)

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) Joriy etish chek-varaqasi

  • Har bir operatsiya uchun vosita tanlangan va runbook tasvirlangan.
  • Dry-run, tasdiqlash va chegaralar (panjara) mavjud.
  • Loglar tuzilgan, metriklar va alertlar ulangan.
  • Ombordan sirlar, kirish minimal va vaqtinchalik.
  • Testlar (birlik/integratsiya/kanareya) va simulyatsiyalar o’tkazildi.
  • GitOps/PR-revyu majburiy, audit bor.
  • Qaytish rejasi va muvaffaqiyat mezonlari hujjatlashtirilgan.
  • Avtomatlashtirish SLO/xato byudjetlariga bog’langan.

15) Anti-patternlar

Idempotentlik va qaytishsiz skriptlar.
«Koddagi sirlar», hamma narsaga superadmin hisob-kitoblar.
Auditsiz prodda qo’lda tuzatishlar kiritish.
Deklarativ IaC o’rniga bo’lakli Bash-hayvonot bog’i.
Kodga tikilgan parametrlar - qayta foydalanish mumkin emas.
Hech qanday dry-run/kanareya yo’q → katta portlashlar.
Tuzilishi va korelyasiyasiz «odamlar uchun» loglari.

16) Ops-avtomatlashtirish etuklik metrikasi

Coverage:% avtomatlashtirish va runbook.
Success rate/Retry rate avtomatik vazifalar.
Mean time to execute (o’rtacha davomiyligi) va on-time (muddati).
Change failure rate avtomatlashtirishdan oldin/keyin.

Audit-to’liqlik: to’liq evidence bilan operatsiyalar%

Sekyuriti: kalitlar/sertifikatlar rotatsiyasi vaqti, JIT kirish ulushi.

17) Jami

Ops-avtomatlashtirish - bu turli xil skriptlar to’plami emas, balki tizim: idempotent harakatlar, xavfsiz panjara, kuzatuv, sirlar va nazorat ostidagi kirish, GitOps/ChatOps, testlar va mashqlar. Bunday tizimda operatsiyalar tez, oldindan aytib bo’lmaydigan va auditoriyalanadigan bo’lib, biznes barqaror relizlar va hodisalar xavfi past bo’ladi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.