ऑप्स स्वचालन और स्क्रिप्ट
1) स्वचालित संचालन क्यों करें
MTTR/मानवीय त्रुटि को कम करता है, रिलीज और प्रतिक्रियाओं को तेज करता है।
क्रियाओं को दोहराने योग्य और श्रव्य (अनुपालन) बनाता है।
इंजीनियरों को सुधार के लिए समय मुक्त करता है, नियमित नहीं।
2) बुनियादी सिद्धांत
1. पहचान: पुनर्मिलन - एक ही परिणाम।
2. सुरक्षा रेलिंग: ड्राई-रन, पुष्टि, सीमा, ऑटो-रोलबैक।
3. अवलोकन: लॉग/मैट्रिक्स/ट्रेल्स प्रत्येक स्क्रिप्ट/पाइपलाइन में बनाए जाते हैं।
4. कॉन्फ़िगरेशन> कोड में स्थिरांक: सभी पैरामीटर/मैनिफेस्ट के माध्यम से।
5. GitOps/Docs-as-Code: लेनदेन कोड बहुत लंबवत, समीक्षा, परीक्षण किया जाता है।
6. छोटे कदम: कैनरी लोब, बैच, बजट के साथ पीछे हटना।
7. रेपो में कोई रहस्य नहीं: केवल गुप्त भंडारण के माध्यम से।
3) स्वचालन कार्य कक्षाएं
उपचारात्मक और घटनाएं: रोलबैक, प्रदाता स्विच, गिरावट सुविधा झंडे।
नियोजित कार्य: प्रमाणपत्र/कुंजियों का रोटेशन, डेटाबेस माइग्रेशन (expand→migrate→contract)।
बुनियादी ढांचा प्रबंधन: IaC (Terraform), विन्यास (Ansible), K8s प्रकट।
डेटा और डेटाऑप्स: बैकफिल, ईटीएल, गुणवत्ता सत्यापन।
Xaoc/DR अभ्यास: सुरक्षा द्वार के साथ विफलताओं का अनुकरण।
4) एक उपकरण कैसे चुनें
बैश - लघु गोंद स्क्रिप्ट, सीएलआई ऑर्केस्ट्रेशन।
पायथन - तर्क/एसडीके, रेट्राई, एपीआई, JSON/YAML के साथ काम करते हैं।
एंसिबल - पहचान कॉन्फ़िगरेशन, किसी एजेंट की आवश्यकता नहीं।
Terraform एक घोषणात्मक बुनियादी ढांचा है।
कुबेरनेट्स जॉब्स/क्रोनजॉब्स - बैच कार्य/शेड्यूलिंग।
Argo/Airflow - निर्भर DAGs और ऑर्केस्ट्रेशन।
ChatOps - ऑडिट के साथ चैट से सुरक्षित लॉन्च।
5) स्वचालन वास्तुकला (संदर्भ)
CLI/ChatOps → नियंत्रक (GitOps/ऑर्केस्ट्रेटर) → कलाकार (Ansible/Terraform/K8s नौकरी) → निगरानी (लॉग/मैट्रिक्स/ट्रेल्स) → ऑडिटिंग/टिकटिंग → डॉकिंग कलाकृतियां (सबूत)।
6) पहचान और शर्त प्रबंधन
"जाँच करें, फिर बदलें": पता लगाएं-तब-अधिनियम (यदि पहले से ही ठीक है - कुछ भी नहीं करें)।
लंबी प्रक्रियाओं के लिए "स्टेट/लॉक" स्टोर करें।
प्रक्रियाओं को बार-बार चलाने की संभावना के साथ परमाणु चरणों में विभाजित करें।
7) कीड़े, पीछे हटना और रोलबैक
घातीय देरी और झटके के साथ रेट्राई।
संचालन समय बजट (प्रति कार्य कुल एसएलए)।
रोलबैक और सर्किट ब्रेकर हमेशा प्रदान किए जाते हैं।
स्पष्ट वापसी कोड और संरचित त्रुटियां।
8) सुरक्षा और रहस्य
RBAC/ABAC, न्यूनतम विशेषाधिकार, अस्थायी टोकन (JIT/JEA)।
तिजोरी/केएमएस/क्लाउड सीक्रेट मैनेजर से रहस्य; कुंजियाँ घुमायी जाती हैं।
"कर्तव्यों का पृथक्करण": जो लिखता है वह वह नहीं है जो अनुमोदन करता है और प्रोड में लॉन्च करता है।
लेखा परीक्षा लॉग: कौन/कब/क्या/क्या परिणाम के साथ।
9) GitOps и ChatOps
पीआर परीक्षण समीक्षा पर्यावरण के लिए ऑटो-प्रचार में विलय।
चैट में कमांड (उदाहरण के लिए, '/ऑप्स चेकआउट तैनात करता है --canary 5% ') पाइपलाइनों का कारण बनता है; बॉट डैशबोर्ड पर सबूत और लिंक लागू करते हैं।
10) योजना और ऑर्केस्ट्रेशन
निर्भरता और समय सीमा के साथ CronJobs/DAG।
प्रतियोगिता: कार्य के आधार पर 'निषिद्ध', 'बदलें', 'अनुमति' (K8s)।
संसाधन नीतियां/कोटा ताकि प्रोड को "न खाएं"।
11) स्वचालन की अवलोकन क्षमता
मेट्रिक्स: सफलता/त्रुटि, अवधि, रिट्रे, प्रभावित वस्तुएं।
लॉग: संरचित, सहसंबंध-आईडी, त्रुटि पर लाल रेखा।
निशान: वितरित निशान में लंबे संचालन के चरण दिखाई देते हैं।
अलर्ट: लक्षणों (एसएलओ) और तकनीकी मैट्रिक्स (समय सीमा,% त्रुटियों) द्वारा।
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())
एनीबल (पहचान कार्य)
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
कुबेरनेट्स क्रोनजॉब (नियोजित घूर्णन)
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) एंटी-पैटर्न
बिना पहचान और रोलबैक के स्क्रिप्ट।
"कोड में रहस्य", सुपरडैमिन सब कुछ के लिए खाता है।
बिना लेखा परीक्षा के बिक्री में मैनुअल संपादन।
घोषणात्मक IaC के बजाय चंकी बैश चिड़ियाघर।
कोड में पैरामीटर "संरक्षित" - कोई पुन: उपयोग नहीं।
कोई ड्राई-रन/कैनरी नहीं - बड़े विस्फोट।
संरचना और सहसंबंध के बिना "लोगों के लिए" लॉग।
16) ऑप्स ऑटोमेशन परिपक्वता मैट्रिक्स
कवरेज: स्वचालन और रनबुक संचालन का%।
स्वचालित कार्यों की सफलता दर/पुनरावृत्ति दर।
निष्पादित करने का मतलब समय और समय पर।
स्वचालन से पहले/बाद में असफलता दर बदलें।
ऑडिट-पूर्णता: पूर्ण सबूत के साथ संचालन का%।
सुरक्षा: कुंजी/प्रमाणपत्र घूर्णन समय, JIT अभिगम का हिस्सा।
17) नीचे की रेखा
ऑप्स ऑटोमेशन असमान स्क्रिप्ट का एक सेट नहीं है, बल्कि एक प्रणाली है: नियंत्रण के तहत अज्ञात कार्रवाई, सुरक्षित रेलिंग, अवलोकन, रहस्य और पहुंच, GitOps/ChatOps, परीक्षण और अभ्यास। ऐसी प्रणाली में, संचालन तेज, अनुमानित और श्रव्य हो जाता है - और व्यवसाय को स्थिर रिलीज और घटनाओं का कम जोखिम प्राप्त होता है।