深色模式
运维规范总览
摘要:规范不是束缚,而是把"只有老员工知道的做法"变成人人可执行的标准动作。本文说明规范的三层结构(原则 / 流程 / 手册)、落地顺序,以及如何用仓库管理规范并自动维护索引。
适用环境
bash
mkdir -p ops-standards/{principles,sop,runbooks,templates}
cd ops-standards && git init -q && echo "规范仓库初始化完成"
ls -11
2
3
2
3
操作步骤
第 1 步:理解规范的三层结构
bash
cat > structure.md <<'EOF'
| 层级 | 回答什么 | 变更频率 | 例子 |
| --- | --- | --- | --- |
| 原则 | 为什么这么做 | 年 | 变更必须可回滚 |
| 流程 | 谁在何时做什么 | 季度 | 变更管理流程 |
| 手册 | 具体怎么操作 | 随系统变 | 回滚操作手册 |
EOF1
2
3
4
5
6
7
2
3
4
5
6
7
上层稳定、下层灵活。越靠下越要跟着系统变化更新。
第 2 步:按风险优先落地
bash
cat > priority.md <<'EOF'
1. 变更与发布流程(事故最高发区)
2. 值班与应急手册(MTTR 影响最大)
3. 复盘与改进跟踪(防止重复故障)
4. 文档与知识库(长期效率)
EOF1
2
3
4
5
6
2
3
4
5
6
不要试图一次写完所有规范。先写最高风险的一条,跑通后再扩展。
第 3 步:每条规范都用统一模板
bash
cat > templates/standard-template.md <<'EOF'
# <规范名称>
> 摘要:一句话说明这条规范解决什么问题
## 适用范围
## 角色与职责
## 流程步骤
## 例外与豁免
## 违反时的处理
## 修订记录
EOF1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
第 4 步:自动生成索引,避免链接腐烂
bash
cat > gen-index.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
out=README.md
{
echo "# 运维规范索引"
echo
echo "| 分类 | 规范 | 文件 |"
echo "| --- | --- | --- |"
find . -name '*.md' -not -name 'README.md' -not -path './templates/*' | sort | while read -r f; do
d=$(dirname "$f" | sed 's|^\./||')
t=$(sed -n 's/^# //p' "$f" | head -1)
printf '| %s | %s | %s |\n' "$d" "$t" "$f"
done
} > "$out"
echo "索引已生成"
EOF
chmod +x gen-index.sh && ./gen-index.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
第 5 步:把规范纳入变更评审
bash
# 改代码不改手册的 PR 应被拦截
cat > .github/workflows/check-docs.yml <<'EOF'
name: check-docs
on: [pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./gen-index.sh
EOF1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
验证
bash
# 1. 三层目录都存在内容
ls principles sop runbooks | wc -l
# 2. 索引已生成且覆盖所有文档
grep -c '|' README.md
# 3. 模板存在
test -f templates/standard-template.md && echo "模板 OK"1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常见坑
规范写成"禁止xxx"而无替代方案
只禁止不给出正确做法,执行者只能绕过。每条禁令都要配套"应该怎么做"。
一次性写完 30 篇没人看
规范的价值在于被使用。先写三条高频流程,用起来再扩展。
规范与工具割裂
规范说"必须走审批",实际工具允许直接发布,规范必然失效。关键约束要落到工具层面(流水线卡点)。