اتوماسیون عملیات و اسکریپت
1) چرا عملیات خودکار
کاهش MTTR/خطای انسانی، تسریع انتشار و واکنش.
باعث می شود اقدامات تکرار و حسابرسی (انطباق).
زمان مهندسان را برای بهبود آزاد می کند، نه روال.
2) اصول اساسی
1. Idempotency: تکرار → همان نتیجه.
2. نرده های ایمنی: خشک اجرا، تایید، محدودیت، بازگشت خودکار.
3. قابلیت مشاهده: logs/metrics/trails در هر اسکریپت/خط لوله ساخته شده است.
4. پیکربندی> ثابت در کد: همه از طریق پارامترها/مانیفست ها.
5. GitOps/Docs-as-Code: کد معامله نسخه، بررسی، آزمایش شده است.
6. گام های کوچک: لوب قناری، دسته، retrays با بودجه.
7. هیچ رازی در انبار نیست: فقط از طریق انبارهای مخفی.
3) کلاس های کار اتوماسیون
بازسازی و حوادث: بازگشت، سوئیچ های ارائه دهنده، پرچم های ویژگی تخریب.
کار برنامه ریزی شده: چرخش گواهینامه ها/کلید ها، مهاجرت پایگاه داده (گسترش → مهاجرت → قرارداد).
مدیریت زیرساخت: IaC (Terraform)، پیکربندی (Ansible)، K8s آشکار می شود.
Data and DataOps: backfills، ETL، اعتبار سنجی کیفیت.
تمرینات Xaoc/DR: شبیه سازی شکست با دروازه های امنیتی.
4) چگونه یک ابزار را انتخاب کنید
BASH - اسکریپت چسب کوتاه، ارکستراسیون CLI.
پایتون - منطق/SDK، retrai، API، کار با JSON/YAML.
غیر ممکن - پیکربندی idempotent، هیچ عامل مورد نیاز است.
Terraform یک زیرساخت اعلانی است.
Kubernetes جابز/CronJobs - وظایف دسته ای/برنامه ریزی.
آرگو/جریان هوا - DAG ها وابسته و ارکستراسیون.
ChatOps - راه اندازی امن از چت با حسابرسی.
5) معماری اتوماسیون (مرجع)
CLI/ChatOps → Controller (GitOps/orchestrator) → Performers (Ansible/Terraform/K8s Job) → Monitoring (logs/metrics/trails) → Auditing/ticketing → Docking artifacts (evidence).
6) بی نظمی و مدیریت شرایط
«Check, then change»: detect-then-action (if already OK - do nothing) را انتخاب کنید.
«حالت/قفل» را برای مراحل طولانی ذخیره کنید.
مراحل را به مراحل اتمی با امکان تکرار اجرا تقسیم کنید.
7) اشکالات، عقب نشینی و عقب نشینی
Retray با تاخیر نمایی و لرزش.
بودجه زمان عملیات (کل SLA در هر کار).
رول بک ها و قطع کننده مدار همیشه ارائه می شوند.
کدهای بازگشتی صریح و خطاهای ساختاری
8) امنیت و اسرار
RBAC/ABAC، حداقل امتیازات، نشانه های موقت (JIT/JEA).
اسرار از Vault/KMS/Cloud Secret Manager ؛ کليدها چرخيده اند.
«جدایی از وظایف»: کسی که می نویسد کسی نیست که تایید و راه اندازی در تولید.
گزارش حسابرسی: چه کسی/چه زمانی/چه چیزی/با چه نتیجه ای.
9) GitOps и ChatOps
PR → tests → review → merge → auto-promotion to environments.
دستورات در چت (به عنوان مثال، '/ops deploy checkout --canary 5٪ ') باعث خطوط لوله ؛ رباتها شواهد و پیوندها را به داشبورد اعمال می کنند.
10) برنامه ریزی و ارکستراسیون
CronJobs/DAG با وابستگی ها و مهلت ها.
رقابت: «ممنوع»، «جایگزین»، «اجازه» (K8s) بسته به کار.
سیاست های منابع/سهمیه به طوری که برای «خوردن» تحریک.
11) قابلیت مشاهده اتوماسیون
معیارها: موفقیت/خطا، مدت زمان، بازپرداخت، اشیاء آسیب دیده.
سیاهههای مربوط: ساختار یافته، شناسه همبستگی، خط قرمز در خطا.
ردپاها: مراحل عملیات طولانی در ردپاهای توزیع شده قابل مشاهده است.
هشدارها: با علائم (SLO) و معیارهای فنی (مهلت،٪ خطاها).
12) تست و شبیه سازی
تست واحد منطق و تجزیه کننده مصنوعی.
تست های یکپارچه سازی در sandbox و canary
«شبیه سازی» (خشک اجرا + ارائه دهندگان ساختگی), پخش حالات واقعی.
تمرینات: اهداف روشن، دروازه های امنیتی، 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())
امکان پذیر (کار ایده آل)
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) چک لیست پیاده سازی
- یک ابزار برای هر عملیات انتخاب شده و یک runbook توصیف شده است.
- خشک اجرا، تایید و محدودیت (نرده) وجود دارد.
- سیاههها ساختار یافته اند، معیارها و هشدارها متصل هستند.
- اسرار از ذخیره سازی، حداقل و دسترسی موقت.
- تست (واحد/ادغام/قناری) و شبیه سازی انجام شده است.
- بررسی GitOps/PR مورد نیاز است، ممیزی وجود دارد.
- برنامه ریزی و معیارهای موفقیت مستند شده است.
- اتوماسیون به بودجه SLO/خطا گره خورده است.
15) ضد الگوهای
اسکریپت بدون idempointency و برگشت.
«اسرار در کد»، superadmin برای همه چیز حساب می شود.
ویرایش دستی در فروش بدون حسابرسی.
باغ وحش Chunky Bash به جای IaC اعلانی.
پارامترهای «محافظت شده» در کد - بدون استفاده مجدد.
بدون خشک اجرا/قناری → انفجار بزرگ.
سیاهههای مربوط «برای مردم» بدون ساختار و همبستگی.
16) معیارهای بلوغ اتوماسیون Ops
پوشش:٪ از عملیات اتوماسیون و runbook.
میزان موفقیت/میزان تکرار وظایف خودکار.
میانگین زمان برای اجرا و به موقع.
نرخ شکست را قبل/بعد از اتوماسیون تغییر دهید.
حسابرسی کامل:٪ از عملیات با شواهد کامل.
امنیت: زمان چرخش کلید/گواهی، سهم دسترسی JIT.
17) خط پایین
اتوماسیون Ops مجموعه ای از اسکریپت های متفاوت نیست، بلکه یک سیستم است: اقدامات بی نظیر، نرده های امن، قابلیت مشاهده، اسرار و دسترسی تحت کنترل، GitOps/ChatOps، آزمایش ها و تمرینات. در چنین سیستمی، عملیات سریع، قابل پیش بینی و حسابرسی می شوند - و کسب و کار نسخه های پایدار و خطر کم حوادث را دریافت می کند.