GH GambleHub

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.

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.