أتمتة العمليات والنصوص
1) لماذا أتمتة العمليات
يقلل من MTTR/الخطأ البشري، ويسرع الإطلاقات وردود الفعل.
جعل الإجراءات قابلة للتكرار وقابلة للمراجعة (الامتثال).
يحرر المهندسين "وقت التحسين وليس الروتين.
2) المبادئ الأساسية
1. الفراغ: إعادة → نفس النتيجة.
2. درابزين الأمان: التشغيل الجاف، التأكيدات، الحدود، التراجع التلقائي.
3. إمكانية الرصد: يتم تضمين السجلات/المقاييس/المسارات في كل خط نصي/خط أنابيب.
4. التكوين> الثوابت في الكود: كل ذلك من خلال المعلمات/البيانات.
5. GitOps/Docs-as-Code: يتم التحقق من رمز المعاملات ومراجعته واختباره.
6. خطوات صغيرة: فصوص الكناري، دفعات، تعاد بميزانيات.
7. لا أسرار في إعادة الشراء: فقط من خلال التخزين السري.
3) فئات مهام التشغيل الآلي
الإصلاح والحوادث: التراجع، مفاتيح المزود، أعلام ميزة التحلل.
الأعمال المقررة: تناوب الشهادات/المفاتيح، وترحيل قواعد البيانات (expand→migrate→contract).
إدارة البنية التحتية: IaC (Terraform)، التشكيلات (Ansible)، بيانات K8s.
Data and DataOps: backfills، ETL، التحقق من الجودة.
تمارين Xaoc/DR: محاكاة الإخفاقات بالبوابات الأمنية.
4) كيفية اختيار أداة
باش - نصوص غراء قصيرة، تنسيق CLI.
بايثون - المنطق/SDK، retrai، API، العمل مع JSON/YAML.
التكوين غير القابل للتطبيق - التكوين الغبي، لا حاجة إلى عوامل.
Terraform هي بنية تحتية إعلانية.
Kubernetes Jobs/CronJobs - مهام الدفعة/الجدولة.
Argo/Airflow - DAGs المعتمدة والتنسيق.
ChatOps - إطلاق آمن من الدردشة مع التدقيق.
5) بنية التشغيل الآلي (مرجع)
CLI/ChatOps → Controller (GitOps/orchestrator) → Performancers (Ansible/Terraform/K8s Job) → Monitoring (logs/metrics/trails) → Auditing/Ticking → DOOCOKKING.
6) إدارة الخصوصية والحالة
«تحقق، ثم تغير»: اكتشف ثم فعل (إذا كان جيدًا بالفعل - لا تفعل شيئًا).
تخزين «حالة/قفل» للإجراءات الطويلة.
قسّم الإجراءات إلى خطوات ذرية مع إمكانية التشغيل المتكرر.
7) الحشرات والخلوات والتراجع
Retrai مع تأخير أسي ونفخ.
ميزانية وقت التشغيل (مجموع جيش تحرير السودان لكل مهمة).
يتم توفير التراجع وقاطع الدوائر دائمًا.
رموز الإرجاع الصريحة والأخطاء المنظمة.
8) الأمن والأسرار
RBAC/ABAC، الحد الأدنى من الامتيازات، الرموز المؤقتة (JIT/JEA).
أسرار من Vault/KMS/Cloud Secret Manager ؛ المفاتيح مدورة.
«فصل الواجبات»: من يكتب ليس من يوافق ويطلق في الحث.
سجل مراجعة الحسابات: من/متى/ماذا/بأي نتيجة.
9) GitOps и ChatOps
اختبارات العلاقات العامة → → مراجعة → دمج → الترويج التلقائي في البيئات.
الأوامر في الدردشة (على سبيل المثال، '/ops نشر الخروج -- كناري 5٪ ') تسبب خطوط الأنابيب ؛ الروبوتات تطبق الأدلة والروابط على لوحات القيادة.
10) التخطيط والتنسيق
CronJobs/DAG مع التبعيات والمواعيد النهائية.
المنافسة: 'ممنوع'، 'استبدال'، 'السماح' (K8s) اعتمادًا على المهمة.
سياسات/حصص الموارد حتى لا «تأكل» الحافز.
11) إمكانية رصد التشغيل الآلي
المقاييس: النجاح/الخطأ، المدة، إعادة التصوير، الكائنات المتأثرة.
الجذوع: معرف ارتباط منظم، خط أحمر على الخطأ.
الآثار: تظهر خطوات العمليات الطويلة في آثار موزعة.
التنبيهات: حسب الأعراض (SLO) والمقاييس التقنية (الموعد النهائي،٪ من الأخطاء).
12) الاختبارات والمحاكاة
اختبارات وحدة المنطق ومحللات القطع الأثرية.
اختبارات التكامل في صندوق الرمل والكناري.
«المحاكاة» (موفري التشغيل الجاف + الوهمي)، إعادة تشغيل السيناريوهات الحقيقية.
التمارين: أهداف واضحة، بوابات أمنية، AAR→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 "$@"
بايثون (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
Kubernetes 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) قائمة التنفيذ المرجعية
- يتم اختيار أداة لكل عملية ويتم وصف كتيب التشغيل.
- هناك تأكيدات وحدود (درابزين) جافة.
- السجلات منظمة، والمقاييس والتنبيهات متصلة.
- أسرار من التخزين، الحد الأدنى والوصول المؤقت.
- الاختبارات (الوحدة/التكامل/الكناري) وعمليات المحاكاة التي أجريت.
- استعراضات GitOps/PR مطلوبة، وهناك مراجعة.
- تم توثيق خطة التراجع ومعايير النجاح.
- الأتمتة مرتبطة بميزانيات SLO/خطأ.
15) الأنماط المضادة
نصوص بدون حماقة وتراجع.
«الأسرار في الكود»، يحسب superadmin كل شيء.
تعديلات يدوية في المبيعات بدون مراجعة حسابات.
حديقة حيوان مكتنزة باش بدلاً من IaC التصريحية.
المعلمات «محمية» في الكود - لا إعادة استخدام.
لا يوجد جفاف/جزر الكناري → انفجارات كبيرة.
سجلات «للناس» بدون بنية وارتباط.
16) مقاييس نضج التشغيل الآلي
التغطية: النسبة المئوية لعمليات التشغيل الآلي ودفتر التشغيل.
معدل النجاح/معدل إعادة تجربة المهام التلقائية.
يعني الوقت للتنفيذ وفي الوقت المحدد.
معدل فشل التغيير قبل/بعد التشغيل الآلي.
اكتمال مراجعة الحسابات: النسبة المئوية للعمليات مع الأدلة الكاملة.
الأمان: وقت تناوب المفتاح/الشهادة، حصة الوصول إلى JIT.
17) خلاصة القول
أتمتة العمليات ليست مجموعة من النصوص المتباينة، ولكنها نظام: الإجراءات الخفية، والدرابزين الآمن، وقابلية الملاحظة، والأسرار والوصول تحت السيطرة، GitOps/ChatOps، والاختبارات والتمارين. في مثل هذا النظام، تصبح العمليات سريعة ويمكن التنبؤ بها وقابلة للتدقيق - وتتلقى الأعمال إصدارات مستقرة وخطر منخفض من الحوادث.