Logo GH

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 retry-lar.
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 we 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.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.