GH GambleHub

操作自動化和腳本

1)為什麼要自動化操作

減少MTTR/人為錯誤,加快發布和反應。
使動作可重復和可審核(合規性)。
騰出工程師的時間進行改進而不是例行程序。

2)基本原則

1.相同性:重新啟動→相同的結果。
2.安全欄桿:幹跑,確認,限制,自動回滾。
3.可觀察性:每個腳本/管道中都內置了邏輯/度量/跟蹤。
4.配置>代碼中的常數:全部通過參數/清單。
5.GitOps/Docs-as-Code:操作代碼經過驗證、重寫、測試。
6.小步驟:金絲雀股票,蹦床,帶預算的retrai。
7.回購中沒有秘密:僅通過秘密存儲。

3)自動化任務類

重建和事件:回滾,提供商切換,退化字幕。
計劃工作:證書/密鑰輪換,DB遷移(expand→migrate→contract)。
基礎架構管理:IaC (Terraform)、配置(Ansible)、K8s清單。
數據和DataOps:後門、ETL、質量驗證。
Xaoc/DR演習:安全門故障模擬。

4)如何選擇工具

Bash是簡短的glue腳本,CLI編排。
Python-邏輯/SDK,retrai,API,與JSON/YAML合作。
Ansible是一種等效配置,不需要代理。
Terraform是聲明性基礎架構。
Kubernetes Jobs/CronJobs-批處理任務/計劃。
Argo/Airflow是從屬的DAG-和編排。
ChatOps是通過審核從聊天中安全啟動的。

5)自動化架構(參考)

CLI/ChatOps →控制器(GitOps/編排器) →表演者(Ansible/Terraform/K8s工作)→監視(邏輯/度量/跟蹤)→審計/滴答作響→文物(測試)。

6)相似性和狀態管理

「檢查,然後改變」:檢測這些行為(如果已經確定-不要做任何事情)。
為長過程保存「執行標記」(state/lock)。
程序分為原子步驟,並可以重新運行。

7)錯誤、回滾和回滾

具有指數延遲和抖動的回傳。
運營時間預算(每任務總計SLA)。
總是提供回滾和「停止按鈕」(電路斷路器)。
顯式返回代碼和結構化錯誤。

8)安全與秘密

RBAC/ABAC,最低特權,臨時令牌(JIT/JEA)。
來自Vault/KMS/Cloud Secret Manager的秘密;按鍵輪換。
「職責分工」:寫作的人不是批準並在銷售中運行的人。
審計日誌:何人/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時/何時。

9) GitOps и ChatOps

PR →測試→咆哮→ merge →周三的自動促銷。
聊天中的命令(例如'/ops deploy checkout -canary 5%')調用派伊線;機器人施加事件和指向行車記錄儀的鏈接。

10)規劃和編排

CronJobs/DAG具有依賴性和截止線。
競爭:「Forbid」,「Replace」,「Allow」(K8s)取決於任務。
資源政策/配額以免被「吃掉」。

11)自動可觀察性

度量標準:成功/錯誤、持續時間、轉發、受影響的對象。
Logs:結構化的correlation-ID,錯誤上的紅色字符串。
Traces:在分布式跟蹤中可以看到冗長操作的步驟。
Alerts:按癥狀(SLO)和技術指標(截止日期、百分比錯誤)。

12)測試和模擬

邏輯和人工制品解析器的統一測試。
沙盒和金絲雀的整合測試。
「模擬器」(dry-run+虛擬提供程序),replay replay real script。
演習:明確的目標,安全門,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 "$@"
🚨 Check Alignment of Python)
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 Actions(聊天操作觸發器)

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)實施支票

  • 為每個操作選擇了工具並描述了運行手冊。
  • 有幹跑,確認和限制(欄桿)。
  • 徽標是結構化的,度量標準和Alertes連接的。
  • 來自存儲的秘密,最小和暫時的可用性。
  • 進行了測試(unit/集成/金絲雀)和模擬。
  • GitOps/PR評論是強制性的,有審計。
  • 回滾計劃和成功標準已記錄在案。
  • 自動化與SLO/錯誤預算掛鉤。

15)反模式

腳本沒有止步和回滾。
「代碼中的秘密」,每個人的超級記分卡。
手動編輯在銷售中無需審核。
Bash動物園代替聲明性IaC。
「縫合」到代碼的選項-沒有重新使用。
沒有幹跑/金絲雀→大爆炸。
沒有結構和共鳴的「為人」徽標。

16)Ops自動化成熟度量標準

Coverage:自動化和運行手冊操作的百分比。
Success rate/Retry rate自動任務。
要求執行時間(平均持續時間)和計時時間(在截止日期)。
自動化之前/之後更改失敗率。
審核完整性:具有完整事件的百分比。
證券:按鍵/證書輪換時間,JIT訪問份額。

17)結果

Ops自動化不是一組不同的腳本,而是系統:等效動作,安全欄桿,可觀察性,秘密和可控制性,GitOps/ChatOps,測試和練習。在這樣的系統中,操作變得快速,可預測和可審核-業務獲得穩定的發布和低事件風險。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

Telegram
@Gamble_GC
開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。