Ops-awtomatlaşdyrma we skriptlar
1) Näme üçin amallary awtomatlaşdyrmaly?
MTTR/adam ýalňyşlyklaryny peseldýär, goýberişleri we reaksiýalary çaltlaşdyrýar.
Hereketleri gaýtalanýan we diňlenilýän edýär (complayens).
Inersenerler üçin gündelik däl-de, gowulaşmak üçin wagt boşadýar.
2) Esasy ýörelgeler
1. Idempotentlik: täzeden başlamak → şol bir netije.
2. Howpsuz relsler: dry-run, tassyklamalar, çäkler, awto-yza gaýdyp gelmek.
3. Syn edilişi: logler/metrikler/treysler her skriptde/paypline ýerleşdirildi.
4. Konwertler> Konwertler: Hemme zat parametrler/manifestler arkaly.
5. GitOps/Docs-as-Code: amallaryň kody wersiýalanýar, täzeden seredilýär, synagdan geçirilýär.
6. Kiçi ädimler: kanareýa paýlary, batçi, býudjetler bilen retralar.
7. Repoda syrsyz: diňe gizlin ammar arkaly.
3) Awtomatlaşdyrmagyň wezipeleriniň synplary
Remediasiýa we hadysalar: yzyna gaýdyp gelmek, üpjün edijileri üýtgetmek, zaýalanmagyň baýdaklary.
Meýilleşdirilen işler: şahadatnamalary/açarlary aýlamak, DB göçmek (expand → migrate → contract).
Infrastrukturany dolandyrmak: IaC (Terraform), konfigurasiýa (Ansible), K8s manifestleri.
Maglumatlar we DataOps: bellikler, ETL, hil tassyklamasy.
Xaoc/DR-maşklar: howpsuzlyk nyşanlary bilen şowsuzlyklaryň simulýasiýalary.
4) Guraly nädip saýlamaly
Bash - gysga glue-skriptlar, CLI-orkestri.
Python - logika/SDK, retralar, API, JSON/YAML bilen işlemek.
Ansible - idempotent konfigurasiýasy, agentler gerek däl.
Terraform - deklaratiw infrastruktura.
Kubernetes Jobs/CronJobs - paketli meseleler/meýilnamalaşdyrmak.
Argo/Airflow - garaşly DAG we orkestr.
ChatOps - audit söhbetdeşliginden ygtybarly başlamak.
5) Awtomatikanyň arhitekturasy (salgylanma)
CLI/ChatOps → Kontroller (GitOps/orkestrator) → Ýerine ýetirijiler (Ansible/Terraform/K8s Job) → Gözegçilik (loglar/metrikler/söwdalar) → Audit/tiketing → Dok- artefaktlar (evidence).
6) Idempotentlik we ýagdaýy dolandyrmak
"Barlaň, soň üýtgediň": detect-then-act (eger eýýäm OK bolsa - hiç zat etmäň).
Uzak amallar üçin "ýerine ýetiriş belliklerini" (state/lock) saklaň.
Amallary gaýtadan geçmek mümkinçiligi bilen atom ädimlerine bölüň.
7) Ýalňyşlyklar, retralar we yzyna gaýtarmalar
Eksponensial gijikdirme we jitter bilen retrailer.
Amal wagtynyň býudjeti (wezipe üçin umumy SLA).
Yza gaýdyp gelmek we "stop-düwme" (circuit breaker) elmydama göz öňünde tutulýar.
Aýdyň yzyna gaýtaryş kodlary we gurluş ýalňyşlyklary.
8) Howpsuzlyk we syrlar
RBAC/ABAC, iň az artykmaçlyklar, wagtlaýyn bellikler (JIT/JEA).
Vault/KMS/Cloud Secret Manager-den syrlar; açarlar aýlanýar.
"Borçlaryň bölünmegi": kim ýazsa, ony tassyklaýan we başlaýan adam däl.
Audit-žurnal: kim/haçan/näme/nähili netije bilen.
9) GitOps и ChatOps
PR → synaglary → revew → merj → gurşawda awto-mahabat.
Söhbetdeşlik buýruklary (mysal üçin '/ops deploy checkout --canary 5% ') paýlaýnlary çagyrýar; botlar "evidence" we "dashbordlara" salgylanmalar berýär.
10) Meýilleşdiriş we orkestr
CronJobs/DAG endikleri we möhletleri bilen.
Bäsdeşlik ukyby: 'Forbid', 'Replace', 'Allow' (K8s).
"Iýmezlik" üçin çeşmeler/kwotalar syýasaty.
11) Awtomatikanyň syn edilmegi
Metrikler: üstünlik/ýalňyşlyk, dowamlylyk, retralar, täsir eden obýektler.
Loglar: gurluş, correlation-ID, gyzyl setirde ýalňyşlyk.
Treýslar: uzak amallaryň ädimleri paýlanan ýollarda görünýär.
Alertler: alamatlar boýunça (SLO) we tehniki metrikler boýunça (möhleti, ýalňyşlyklaryň%).
12) Synag we simulýasiýa
Artefaktlaryň logikasynyň we parserleriniň bitewi synaglary.
Gum gutusynda we kanareýkada integrasiýa synaglary.
"Simulýatorlar" (dry-run + toslama üpjün edijiler), hakyky ssenarileriň repleýsi.
Maşklar: anyk maksatlar, howpsuzlyk geýtleri, AAR → RCA → CAPA.
13) Kod şablonlary
Bash (ýelekli 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
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 (meýilleşdirilen aýlaw)
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 tetigi)
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) Girizmegiň çek-sanawy
- Her amal üçin gural saýlandy we runbook beýan edildi.
- Dry-run, tassyklamalar we çäkler bar.
- Loglar gurluş, metrikler we alertler birikdirildi.
- Ammardan syrlar, elýeterlilik iň az we wagtlaýyn.
- Synaglar (birlik/integrasiýa/kanareýa) we simulýasiýa geçirildi.
- GitOps/PR-review hökmanydyr, audit bar.
- Yzyna gaýtarmak meýilnamasy we üstünlik ölçegleri resminamalaşdyryldy.
- Awtomatlaşdyryş SLO/ýalňyşlyk býudjetine baglydyr.
15) Anti-patternler
Idempotentlik we yza gaýdyp gelmezden skriptlar.
"Koddaky syrlar", hemme zat üçin superadmin hasaplary.
Auditsiz önümdäki el bilen düzedişler.
Deklaratiw IaC-iň ýerine bölek Bash-haýwanat bagy.
Koda "tikilen" parametrleri - gaýtadan ulanylmaýar.
Hiç hili dry-run/kanareýa → uly partlamalar.
Gurluşsyz we korelýasiýasyz "adamlar üçin" logleri.
16) Ops-awtomatlaşdyrmagyň kämillik ölçegleri
Coverage:% awtomatlaşdyrma we runbook amallary.
Success rate/Retry rate awtomatiki meseleler.
Mean time to execute (ortaça dowamlylygy) we on-time (möhletinde).
Change failure rate awtomatlaşdyrylandan öň/soň.
Audit-doly: doly evidence bilen amallaryň%.
Howpsuzlyk: açarlaryň/şahadatnamalaryň aýlanma wagty, JIT-elýeterliligiň paýy.
17) Jemleýji
Ops-awtomatlaşdyryş bölünen skriptleriň toplumy däl-de, ulgam: dempotent hereketler, howpsuz päsgelçilikler, gözegçilik, syrlar we gözegçilik astynda elýeterlilik, GitOps/ChatOps, synaglar we maşklar. Şeýle ulgamda amallar çalt, öňünden aýdyp boljak we diňlenip bolýan bolýar - işewürlik bolsa durnukly goýberişleri we hadysalaryň pes töwekgelçiligini alýar.