GH GambleHub

Ops-автоматташтыруу жана скрипттер

1) Эмне үчүн операцияларды автоматташтыруу керек

MTTR/адамдын каталарын азайтат, релиздерди жана реакцияларды тездетет.
Иш-аракеттерди кайталанма жана аудиялануучу кылат (комплаенс).
күнүмдүк эмес, жакшыртуу үчүн инженерлер убакыт бошотулат.

2) Негизги принциптер

1. Демпотенттик: кайра баштоо → ошол эле натыйжа.
2. Коопсуз тосмолор: dry-run, ырастоо, лимиттер, auto-rebound.
3. Байкоо: Логи/метрика/Tracks ар бир скрипт/Paypline камтылган.
4. Конфигурация> коддогу константалар: бардык параметрлер/манифесттер аркылуу.
5. GitOps/Docs-as-Code: операциялардын коду версияланат, ревизияланат, сыналат.
6. Чакан кадамдар: канар үлүштөрү, батчи, бюджеттер менен ретрайлер.
7. Реподо эч кандай сыр жок: жашыруун сактоо аркылуу гана.

3) Автоматташтыруу тапшырмаларынын класстары

Ремедиация жана инциденттер: артка кайтуу, провайдерлерди которуу, деградациянын фича-желектери.
Пландаштырылган иштер: сертификаттарды/ачкычтарды ротациялоо, DD миграциясы (expand → migrate → contract).
Инфраструктураны башкаруу: IaC (Terraform), конфигурациялар (Ansible), K8s манифесттер.
Маалыматтар жана DataOps: backfills, ETL, сапатын тастыктоо.
Xaoc/DR-машыгуу: коопсуздук gates менен ийгиликсиз симуляцияларды.

4) Аспапты кантип тандоо керек

Bash - кыска glue скрипт, CLI оркестр.
Python - логика/SDK, Retray, API, JSON/YAML менен иштөө.
Ansible - демпотенттик конфигурация, агенттердин кереги жок.
Terraform - декларативдик инфраструктура.
Kubernetes Jobs/CronJobs - топтомдук тапшырмалар/пландаштыруу.
Argo/Airflow - көз каранды DAG жана оркестр.
ChatOps - аудит менен чаттан коопсуз баштоо.

5) Автоматика архитектурасы (референт)

CLI/ChatOps → Контроллер (GitOps/оркестратор) → Аткаруучулар (Ansible/Terraform/K8s Job) → Мониторинг (Логи/Метрика/Трейс) → Аудит/Тикетинг → Док-экспонаттар (evidence).

6) Демпотенттик жана мамлекеттик башкаруу

"Текшерүү, андан кийин өзгөртүү": detect-then-act (OK болсо - эч нерсе кылба).
Узак процедуралар үчүн "аткаруу белгилерин" (state/lock) сактоо.
Процедураларды атомдук кадамдарга бөлүңүз.

7) Каталар, Retray жана кайра

экспоненциалдык кечигүү жана Jitter менен Retray.
Операция убактысынын бюджети (тапшырма үчүн жалпы SLA).
Артка жана "токтоо баскычы" (circuit breaker) ар дайым каралган.
Ачык кайтаруу коддору жана структураланган каталар.

8) Коопсуздук жана сырлар

RBAC/ABAC, минималдуу артыкчылыктар, убактылуу токендер (JIT/JEA).
Vault/KMS/Cloud Secret Manager компаниясынын сырлары; ачкычтар айланат.
"Милдеттерди бөлүштүрүү": ким жазат - аны жактырган жана прод-да ишке киргизген адам эмес.
Аудит-журнал: ким/качан/эмне/кандай жыйынтык менен.

9) GitOps и ChatOps

PR → тесттер → review → мердж → шаршемби күнү auto-промоушн.
Чаттагы командалар (мисалы, '/ops deploy checkout --canary 5% ') пайплайндарды чакырат; боттор evidence жана dashboard шилтемелер колдонулат.

10) Пландаштыруу жана оркестр

CronJobs/DAG көз карандылыгы жана мөөнөтү менен.
Атаандаштык: 'Forbid', 'Replace', 'Allow' (K8s) милдеттерине жараша.
Ресурстар/квота саясаты "жегенге" болбойт.

11) Автоматика байкоо

Метрика: ийгилик/ката, узактыгы, ретра, таасир объектилер.
Логи: структураланган, correlation-ID, кызыл сызык ката.
Tracks: узак иш кадамдар бөлүштүрүлгөн жолдор менен көрүнүп турат.
Алерталар: симптомдору (SLO) жана техникалык көрсөткүчтөрү (мөөнөтү, каталардын%).

12) Сыноо жана симуляция

Юнит-тесттер логика жана парсер артефакттары.
Кум жана канарейка боюнча интеграциялык тесттер.
"Тренажерлор" (dry-run + жасалма провайдерлер), чыныгы сценарийлерди кайталоо.
Машыгуулар: так максаттар, коопсуздук гейтс, AAR → RCA → CAPA.

13) Код үлгүлөрү

Bash

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

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 (демпотенттик тапшырма)

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 (пландаштырылган айлануу)

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 триггер)

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) Киргизүү чек-тизмеси

  • Ар бир иш үчүн курал тандалып алынган жана runbook сүрөттөлгөн.
  • dry-run, ырастоо жана чектөөлөрдү (тосмо) бар.
  • Логдор структураланган, метриктер жана алерталар туташтырылган.
  • сактоо сырлары, минималдуу жана убактылуу жеткиликтүүлүгү.
  • Тесттер (бирдик/интеграция/канарейка) жана симуляциялар өткөрүлдү.
  • GitOps/PR-review милдеттүү, аудит бар.
  • Кайтаруу планы жана ийгилик критерийлери документтештирилген.
  • Автоматташтыруу SLO/ката бюджеттерге байланыштуу.

15) Анти-үлгүлөрү

Сценарийлер эч кандай идемпотенттүүлүк жана артка кайтуу.
"Secrets in code", бардык superadmin эсептер.
Аудитсиз кол менен оңдоолор.
Dust Bash зоопарк ордуна декларативдик IaC.
Кодго "тигилген" параметрлери - кайра пайдалануу жок.
Жок dry-run/канарейка → чоң жарылуулар.
Логи "адамдар үчүн" түзүлүшү жана кореляциясы жок.

16) Жетилүү Метрика Ops-Automation

Coverage:% автоматташтыруу жана runbook менен иш.
Success rate/Retry rate автоматтык тапшырмалар.
Mean time to execute (орточо узактыгы) жана on-time (мөөнөтүндө).
Change failure rate чейин/кийин автоматташтыруу.
Аудит-толук: бүтүмдөрдүн% толук evidence менен.
Security: ачкычтарды/сертификаттарды айлантуу убактысы, JIT жетүү үлүшү.

17) Жыйынтык

Ops-автоматташтыруу - бул чачыранды скрипттердин жыйындысы эмес, ал эми система: демпотенттик аракеттер, коопсуз тосмолор, байкоо, сырлар жана көзөмөлгө алуу, GitOps/ChatOps, тесттер жана машыгуулар. Мындай системада операциялар тез, алдын ала айтууга жана текшерүүгө болот - ал эми бизнес туруктуу релиздерди жана инциденттердин төмөн коркунучун алат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.