Ops-автоматтандыру және скрипттер
1) Не үшін операцияларды автоматтандыру
MTTR/адам қателіктерін азайтады, релиздер мен реакцияларды жылдамдатады.
Әрекетті қайталанатын және аудиттелетін етеді (комплаенс).
Дағдыларды емес, инженерлерді жақсартуға уақыт береді.
2) Негізгі қағидаттар
1. Теңсіздік: қайта іске қосу → сол нәтиже.
2. Қауіпсіз сүйеніштер: dry-run, растаулар, лимиттер, авто-қайтарулар.
3. Бақылау мүмкіндігі: логи/метрика/трейстер әрбір скриптке/пайплайнға енгізілген.
4. > Кодтағы константалар конфигурациясы: барлық параметрлер/манифесттер арқылы.
5. GitOps/Docs-as-Code: операциялар коды нұсқаланады, тексеріледі, тестіленеді.
6. Шағын қадамдар: канареялық үлестер, батчилер, бюджеттермен ретраилер.
7. Репода құпиясыз: тек secret-сақтау орны арқылы.
3) Автоматтандыру міндеттерінің сыныптары
Ремедиация және инциденттер: кері қайтару, провайдерлерді ауыстырып қосу, тозудың фича-жалаулары.
Жоспарлы жұмыстар: сертификаттарды/кілттерді ротациялау, ДБ көшіру (expand → migrate → contract).
Инфрақұрылымды басқару: IaC (Terraform), конфигурациялар (Ansible), K8s манифесттер.
Деректер және DataOps: бэкфилдер, ETL, сапа валидациясы.
Xaoc/DR-жаттығулар: қауіпсіздік гейттерімен істен шығу симуляциялары.
4) Құралды қалай таңдау керек
Bash - қысқа glue-скрипттер, CLI-оркестрі.
Python - логика/SDK, ретра, API, JSON/YAML-мен жұмыс істеу.
Ansible - теңшелетін конфигурация, агенттер қажет емес.
Terraform - декларативтік инфрақұрылым.
Kubernetes Jobs/CronJobs - пакеттік тапсырмалар/жоспарлау.
Argo/Airflow - тәуелдi DAG-и және оркестрлеу.
ChatOps - аудитпен сөйлесуден қауіпсіз іске қосу.
5) Автоматика архитектурасы (референс)
CLI/ChatOps → Контроллер (GitOps/оркестратор) → Орындаушылар (Ansible/Terraform/K8s Job) → Мониторинг (логи/метрика/трейстер) → Аудит/тикетинг → Док-артефактілер (evidence).
6) Теңсіздік және жай-күйді басқару
«Тексеріңіз, содан кейін өзгертіңіз»: detect-then-act (егер жарамды болса - ештеңе істемеңіз).
Ұзақ рәсімдер үшін «орындалу белгілерін» (state/lock) сақтаңыз.
Процедураларды қайталап басып өту мүмкіндігімен атомарлық қадамдарға бөліңіз.
7) Қателер, ретрациялар және кері қайтарулар
Экспоненциалды кідіріспен және джиттермен ретраялар.
Операция уақытының бюджеті (тапсырмаға арналған жалпы SLA).
Кері қайту және «тоқта түймесі» (circuit breaker) әрқашан көзделген.
Айқын қайтару кодтары және құрылымдалған қателер.
8) Қауіпсіздік және құпиялар
RBAC/ABAC, ең аз артықшылықтар, уақытша токендер (JIT/JEA).
Vault/KMS/Cloud Secret Manager бағдарламасынан құпиялар; кілттер айналады.
«Міндеттерді бөлу»: кім жазады - ол өнімді мақұлдайтын және іске қосатын адам емес.
Аудит-журнал: кім/қашан/не/қандай нәтижемен.
9) GitOps и ChatOps
PR → тесттер → ревью → мердж → ортадағы авто-промоушен.
Сөйлесудегі командалар (мысалы, '/ops deploy checkout --canary 5% ') пайплайндарды шақырады; боттар evidence және дашбордтарға сілтеме жасайды.
10) Жоспарлау және оркестрлеу
CronJobs/DAG тәуелділіктері мен мерзімдері бар.
Бәсекелестік: міндетіне байланысты 'Forbid', 'Replace', 'Allow' (K8s).
Қорлар/квоталар саясаты «жеуге» жол бермеу үшін.
11) Автоматиканы бақылау
Метрика: жетістік/қате, ұзақтығы, ретраялары, қозғалған нысандар.
Логтар: құрылымдалған, correlation-ID, қатедегі қызыл жол.
Трейстер: ұзақ операциялардың қадамдары бөлінген трассаларда көрінеді.
Аллергия: симптомдары бойынша (SLO) және техникалық өлшемдері бойынша (мерзім, қателер%).
12) Тестілеу және симуляциялар
Артефактілердің логикасы мен парсерлерінің юнит-тестілері.
Құмсалғыштағы және канарейкадағы интеграциялық тестілер.
«Тренажерлар» (dry-run + жалған провайдерлер), нақты сценарийлердің replay.
Жаттығулар: нақты мақсаттар, қауіпсіздік гейттері, 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 тексеру міндетті, аудит бар.
- Қайтару жоспары мен табыс критерийлері құжатталған.
- Автоматтандыру SLO/қате бюджеттеріне байланысты.
15) Қарсы үлгілер
Теңсіздігі мен қайтарымы жоқ скрипттер.
«Кодтағы құпиялар», барлық суперадмин есептер.
Аудитсіз өнімдегі қолмен түзетулер.
IaC декларативтiк орнына кесек Bash-хайуанаттар паркi.
Кодқа «тігілген» параметрлері - қайта пайдалану жоқ.
dry-run/канарейка жоқ → үлкен жарылыстар.
Құрылымы мен кореляциясы жоқ «адамдарға арналған» логтар.
16) Ops-автоматтандыру жетілу өлшемдері
Coverage:% автоматтандыру мен runbook операциялары.
Success rate/Retry rate автоматты тапсырмалар.
Mean time to execute (орташа ұзақтығы) және on-time (мерзімінде).
Автоматтандыруға дейін/кейін Change failure rate.
Аудит-толықтығы: толық evidence операцияларының%.
Секьюрити: кілттерді/сертификаттарды ротациялау уақыты, JIT-қол жеткізу үлесі.
17) Жиынтық
Ops-автоматтандыру - бұл бөлек скрипттердің жиынтығы емес, жүйе: демпотенттік әрекеттер, қауіпсіз сүйеніштер, бақылау, құпиялар және бақылаудағы қолжетімділік, GitOps/ChatOps, тесттер мен жаттығулар. Мұндай жүйеде операциялар жылдам, болжамды және аудиттелетін болады - ал бизнес тұрақты релиздерді және инциденттердің төмен тәуекелін алады.