מבצעים אוטומציה ותסריטים
1) מדוע לבצע פעולות אוטומטיות
מפחית טעות MTTR/אנוש, מאיץ שחרור ותגובות.
גורם לפעולות לחזור על עצמן ולהישמע (ציות).
זה משחרר את הזמן של המהנדסים לשיפור, לא לשגרה.
2) עקרונות בסיסיים
1. Idempotency: שידור חוזר = תוצאה זהה.
2. מעקות בטיחות: הפעלה יבשה, אישור, גבולות, גלגולים אוטומטיים.
3. יכולת תצפית: יומנים/מדדים/שבילים בנויים לתוך כל תסריט/צינור.
4. הגדרות> קבועים בקוד: כל דרך פרמטרים/מניפסטים.
5. GitOps/Docs-as-Code: קוד העברה ממומש, נבחן.
6. צעדים קטנים: אונות כנריות, אצבעות, מגשים מחדש עם תקציבים.
7. בלי סודות, רק דרך חנויות סודיות.
3) שיעורי משימת אוטומציה
תיקונים ותקריות: גלגולים, מתגי ספק, דגלי תכונה השפלה.
עבודה מתוכננת: סיבוב תעודות/מפתחות, נדידת מסד נתונים (הרחבת ach migrate ach).
ניהול תשתיות: ICAC (Terraform), תצורות (Ansible), מניפסטים K8s.
Data ו DataOps: מילואים, ETL, אימות איכות.
תרגילי Xaoc/DR: סימולציה של כשלים עם שערי אבטחה.
4) כיצד לבחור כלי
Bash - תסריטי דבק קצרים, תזמור CLI.
פיתון - היגיון/SDK, רטריי, API, עבודה עם JSON/YAML.
תצורה אידמפוטנטית, אין צורך בסוכנים.
טראפורם הוא תשתית הצהרתית.
קוברנטס ג 'ובס/קרונג' ובס - משימות/לוח זמנים.
ארגו/זרימת אוויר - פגיעות ותזמור תלויים.
פטפוטים - השקה בטוחה משיחה עם ביקורת חשבונות.
5) ארכיטקטורת אוטומציה (התייחסות)
CLI/ChatOps # Controller (GitOps/Orchetterator) # Performers (Ansible/Terraform/K8s Job) # Monitoring (logs/metrics/trails) # Auditing/ticketing Ach Decking Extrices.
6) אידמפוטנטיות וניהול מצב
”בדוק, אז שינוי”: לזהות-אז-act (אם כבר בסדר - לא לעשות כלום).
לאחסן ”מדינה/מנעול” עבור הליכים ארוכים.
לחלק את ההליכים לצעדים אטומיים עם אפשרות של ריצה חוזרת.
7) חרקים, נסיגות וגלגולים
רטריי עם עיכוב מעריכי ועצבני.
תקציב זמן מבצע (SLA סה "כ לכל משימה).
גלגיליות ומעגל חשמלי תמיד מסופקים.
קודי החזרה מפורשים וטעויות מובנות.
8) ביטחון וסודות
RBAC/ABAC, הרשאות מינימום, אסימונים זמניים (JIT/JEA).
סודות מכספת/KMS/Cloud מנהל סודי; המפתחות מסובבים.
”הפרדת חובות”: מי שכותב הוא לא מי שמאשר ומשגר את החומר.
יומן ביקורת: מי/מתי/מה/עם איזו תוצאה.
9) GitOps ChatOps
PR # בדיקות * review # התמזגו * קידום אוטומטי לסביבות.
פקודות בצ 'אט (לדוגמה, '/ops project checkout - canary 5%') כי צינורות; לוחות שימושים ראיות וקישורים ללוחות מחוונים.
10) תכנון ותזמור
CronJobs/DAG עם תלויות ומועדים.
תחרות: ”חלילה”, ”להחליף”, ”לאפשר” (K8s) תלוי במשימה.
מדיניות משאבים/מכסות כדי לא ”לאכול” את הפרוד.
11) יכולת תצפית של אוטומציה
מטריות: הצלחה/שגיאה, משך, מגשים מחדש, אובייקטים מושפעים.
יומנים: מובנים, מתאם-זיהוי, קו אדום על שגיאה.
עקבות: הצעדים של פעולות ארוכות נראים בעקבות מבוזרים.
התראות: על ידי תסמינים (SLO) ועל ידי מדדים טכניים (מועד אחרון,% מהשגיאות).
12) בדיקות וסימולציות
בדיקות יחידה של היגיון ופרסרים חפצים.
בדיקות שילוב בארגז חול וקנרית.
”סימולטורים” (ספקי יבש + דמה), שידור חוזר של תרחישים אמיתיים.
תרגילים: מטרות ברורות, שערי אבטחה, 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 "$@"
פייתון (Retrai + Idempotency)
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
קוברנטס 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 פעולות (הפעלת 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) רשימת מימושים
[ כלי ] A נבחר לכל מבצע ותואר ספר ריצות.
[ ] יש יבשה, אישור והגבלות (מעקות).
[ ] בולי עץ הם מובנים, מדדים והתראות מחוברים.
[ ] סודות מאחסון, גישה מינימלית וזמנית.
[ ] בדיקות (יחידה/אינטגרציה/כנרית) וסימולציות שבוצעו.
[ דרושות ביקורות ] GitOps/PR, יש ביקורת.
[ ] תוכנית רולבק וקריטריוני הצלחה מתועדים.
[ אוטומציה ] קשורה לתקציבי SLO/שגיאה.
15) אנטי דפוסים
תסריטים ללא אימפוטנציה וגלגולים.
”סודות בקוד”, סופר אדמין מסביר הכל.
עריכה ידנית במכירות ללא ביקורת.
גן החיות של צ 'אנקי באש במקום איי-סי הצהרתי.
פרמטרים ”מוגנים” בקוד - אין שימוש חוזר.
אין הפעלה יבשה/קנריות פי פיצוצים גדולים.
יומנים ”לאנשים” ללא מבנה וקורלציה.
16) מדידת בגרות אוטומטית Ops
כיסוי:% ממבצעי האוטומציה והריצה.
קצב הצלחה/Retry קצב של משימות אוטומטיות.
זמן ממוצע לבצע ובזמן.
שינוי קצב כישלון לפני/אחרי אוטומציה.
ביקורת-שלמות:% מהמבצעים עם ראיות מלאות.
אבטחה: זמן סיבוב מפתח/תעודה, שיתוף של גישות JIT.
17) השורה התחתונה
אוטומציה של מבצעים אינה מערכת של תסריטים שונים, אלא מערכת: פעולות אידמפוטנטיות, מעקות מאובטחים, תצפית, סודות וגישה תחת שליטה, GitOps/ChatOps, בדיקות ותרגילים. במערכת כזו, הפעולות נעשות מהירות, צפויות וראויות לשמע - והעסק מקבל שחרור יציב וסיכון נמוך לתקריות.