GH GambleHub

Ops-ավտոմատիզացիա և ջութակներ

1) Ինչո՞ ւ ավտոմատացնել վիրահատությունը

Նվազեցնում է MTTR/մարդու սխալները, արագացնում ալգորիթմները և արձագանքը։

Նա գործողություններ է կատարում կրկնվող և աուդիացված (կոմպլացիա)։

Ազատում է ինժեներների ժամանակը բարելավման համար, ոչ թե ռուտինի համար։

2) Հիմնական սկզբունքները

1. Idempotention 'երկրորդ գործարկումը նույն արդյունքն է։

2. Ապահով փետուրներ ՝ www.y-run, հաստատում, լիմիտներ, ավտո-արձագանքներ։

3. Դիտարկումը 'լոգեր/մետրիկներ/թրեյսներ ներկառուցված են յուրաքանչյուր ջութակի/wwww.pline։

4. Կազմաձևումը> կոդի կայունությունը 'բոլորը պարամետրերի/մանիֆեստի միջոցով։

5. GitoPs/Docs-as-Code: Վիրահատությունների կոդը տարբերակվում է, հեղափոխվում, փորձարկվում։

6. Փոքր քայլերը 'կանացի բաժնետոմսեր, մարտեր, ռելսեր։

7. Առանց ռեպոյի գաղտնիքների 'միայն secret-2019-ի միջոցով։

3) Ավտոմատացման խնդիրների դասերը

Ռեմեդիացիան և միջադեպերը 'արձագանքներ, պրովայդերներ, ֆիչի դրոշներ և դեգրադացիաներ։

Պլանավորված աշխատանք 'հավաստագրերի/հաշվարկների հաշվարկներ, BD (expand www.migrate .ract)։

Ենթակառուցվածքի կառավարումը ՝ IaC (Terraform), կազմաձևը (Ansible), K8s մանիֆեստները։

Տվյալները և WinoPs: backfils, ETL, որակի վալիդացիա։

Xaoc/DR ուսուցումները 'սիմվոլիկ հրաժարումներ անվտանգության խաղացողների հետ։

4) Ինչպես ընտրել գործիքը

Bash-ը կարճ glue-ջութակները, CLI նվագախումբը։

Python-ը/MSK, retrai, API-ն, JSON/YAML-ի հետ աշխատելը։

Ansible-ը idempotent կազմաձևն է, որը պետք չէ։

Terraform-ը կառավարական ենթակառուցվածքն է։

Kubernetes Jobs/Case Jobs-ը փաթեթային առաջադրանքներ/պլանավորում է։

Argo/Airflow-ը կախված DAG-ն և նվագախումբը։

ChatOps-ը անվտանգ արձակումն է չատից աուդիտի հետ։

5) Ավտոմատիկայի ճարտարապետությունը (հանրաքվե)

CLI/ChatOps International (GitOps/նվագարկիչ) - Կատարողներ (Ansible/Terraform/K8s Job) - Logs (Logs/metrics/Tracketing/Tiketing/Dok-արտեֆակտներ)։

6) Իդեմպոտենտալությունը և վիճակը կառավարելը

«Ստուգիր, ապա փոխիր» ՝ detron-then-act (եթե արդեն OK-ն ոչինչ չի անում)։

Պահպանեք «կատարման նշանները» (state/24k) երկար ընթացակարգերի համար։

Ընթացակարգերը բաժանեք ատոմային քայլերին, որոնք կարող են վերաարտադրել։

7) Սխալներ, ակնարկներ և արձագանքներ

Ռետրոյին էքսպոնենցիալ ուշացումով և ջիտթերի հետ։

Վիրահատության ժամանակի բյուջեն (ընդհանուր SLA առաջադրանքի համար)։

Մատնահետքերը և «կանգառի կոճակը» (circuit breaker) միշտ տեղադրված են։

Հստակ չափանիշներ և կառուցվածքային սխալներ։

8) Անվտանգությունն ու գաղտնիքները

RBAC/ABAC, նվազագույն արտոնություններ, ժամանակավոր հոսանքներ (JIT/JLS)։

Գաղտնիքները Vox/KFC/Cloud Secret Line-ից; բանալիները պտտվում են։

«Պարտականությունների բաժանումը», ով գրում է, ոչ թե մեկը, ով հավանություն է տալիս և սկսում է վաճառել։

Աուդիտ ամսագիրը 'ով/երբ/ինչ/որ արդյունք։

9) GitOps и ChatOps

PR-ի թեստերը հակադրվում են միջավայր։

Զրույցի թիմերը (օրինակ ՝ ') առաջացնում են plins; բոտերը կիրառում են evidence և հղում dashbords։

10) Պլանավորումը և նվագախումբը

Cast Jobs/DAG կախվածությամբ և dedlins։

Մրցակցությունը '«Forbid», «Replace», «Allow» (K8s) կախված առաջադրանքից։

Ռեսուրսների/քվոտայի քաղաքական գործիչները, որպեսզի «ուտեն» այլն։

11) Ավտոմատացման դիտարկումը

Մետրիկները 'հաջողությունը/սխալը, տևողությունը, ռետերանները, որոնք ազդում են օբյեկտների վրա։

Լոգները 'կառուցվածքային, direrelation-ID, կարմիր տող սխալների վրա։

Հետքեր ՝ երկար վիրահատությունների քայլերը տեսանելի են բաշխված ուղիներում։

Ալերտներ 'ախտանիշներով (SLO) և ռուսական մետրիկներով (dedline, սխալների տոկոսը)։

12) Փորձարկումներ և սիմվոլներ

Yunit-թեստերը և արտեֆակտների պարսերը։

Ինտեգրացիոն թեստերը ավազում և կանարեյքում։

«Սիմուլյատորներ» (wwww.y-run + ֆիքսված պրովայդերներ), իրական պարամետրեր։

Ուսուցումներ ՝ հստակ նպատակներ, անվտանգության խաղացողներ, AAR no RCA, CAPA։

13) Կոդի ձևանմուշները

Բաշ (կմախք կրակոցներով)

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 (retrai + idempotention)

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 Cast Job (պլանավորված ռոտացիա)

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 Stuger)

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) Ներդրման չեկի ցուցակ

  • Յուրաքանչյուր վիրահատության համար ընտրվում է գործիք և www.runbook։
  • Կան www.y-run, հաստատություններ և սահմաններ (փետուր)։
  • Լոգները կառուցվածքային են, մետրերը և ալերտները միացված են։
  • Գաղտնիքները կղզիներից, մատչելի են նվազագույն և ժամանակային։
  • Թեստերը (յունիտ/ինտեգրում/կանարեյկա) և սիմուլյացիան կատարեցին։
  • GitOps/PR-revie պարտադիր է, կա աուդիտ։
  • Արձագանքման պլանը և հաջողության չափանիշները մեկնաբանվում են։
  • Ավտոմատիզացիան կապված է SLO/սխալի թողարկումների հետ։

15) Anti-patterna

Ջութակները առանց կուռքի և մատնահետքերի։

«Գաղտնիքները կոդում», գերծանրքաշային սալիկներ ամեն ինչի համար։

Ձեռքի ձեռքերը վաճառվում են առանց պահանջների։

Կուսկի Bash-կենդանաբանական պարկը IaC-ի փոխարեն։

«Պարամետրերը» կոդի մեջ չեն։

Չկա www.y-run/kanareks մեծ պայթյուններ։

Լոգները «մարդկանց համար» առանց կառուցվածքի և կորստի։

16) Ops-ավտոմատացման հասունության մետրերը

Coverage-ը ավտոմատիզացիայի և runbook վիրահատությունների տոկոսն է։

Success rate/Retry rate ավտոմատ խնդիրներ։

Mean to execom (միջին տևողությունը) և on-time (dedline)։

Change failure rate-ից մինչև/ավտոմատացումից հետո։

Աուդիտ-ամբողջական 'ամբողջ evidence վիրահատությունների տոկոսը։

Սեկուրիտին 'մրցույթի/հավաստագրերի ռոտացիայի ժամանակը, JIT-հասանելի մասը։

17) Արդյունքը

Ops-ավտոմատիզացիան ոչ թե ցրված ջութակների հավաքածու է, այլ համակարգ 'idempotent գործողություններ, անվտանգ փետուրներ, դիտողություններ, գաղտնիքներ և հասանելի, GitOps/ChatOps, թեստեր և ուսմունքներ։ Վիրահատության այս համակարգում դառնում են արագ, կանխատեսելի և աուդիո, իսկ բիզնեսը ստանում է կայուն օրինագծեր և ցածր ռիսկեր։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։