本项目将综合运用前29课所学知识,构建一个完整的自动化运维平台,涵盖配置管理、监控告警、备份恢复、日志分析等核心功能。
┌─────────────────────────────────┐
│ 自动化运维平台 │
├─────────────────────────────────┤
│ Ansible Playbooks │
│ ├── 系统初始化 (01-06) │
│ ├── 用户与服务 (07-12) │
│ ├── 网络配置 (13-18) │
│ └── 自动化部署 (25-27) │
├─────────────────────────────────┤
│ 监控告警 (28) │
│ 备份恢复 (29) │
│ 日志分析 (22) │
│ Shell脚本 (19-24) │
└─────────────────────────────────┘
ops-platform/
├── ansible/
│ ├── inventory/
│ ├── group_vars/
│ ├── roles/
│ │ ├── common/
│ │ ├── nginx/
│ │ ├── mysql/
│ │ └── monitoring/
│ ├── site.yml
│ └── deploy.sh
├── scripts/
│ ├── backup.sh
│ ├── health-check.sh
│ ├── log-analyze.sh
│ └── security-audit.sh
├── monitoring/
│ ├── prometheus.yml
│ ├── alert_rules.yml
│ └── grafana-dashboards/
└── docs/
└── README.md
# site.yml
---
- name: 全平台部署
hosts: all
become: yes
roles:
- common
- name: Web服务器
hosts: webservers
become: yes
roles:
- nginx
- name: 数据库服务器
hosts: dbservers
become: yes
roles:
- mysql
- name: 监控
hosts: monitoring
become: yes
roles:
- monitoring
#!/bin/bash
# deploy.sh - 一键部署
set -euo pipefail
ENV="${1:-staging}"
INVENTORY="inventory/$ENV.ini"
echo "===== 部署到 $ENV ====="
# 语法检查
ansible-playbook -i "$INVENTORY" site.yml --syntax-check
# Dry run
echo "\n--- 预演 ---"
ansible-playbook -i "$INVENTORY" site.yml --check
# 确认
read -p "确认部署到$ENV? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || exit 0
# 部署
echo "\n--- 部署 ---"
ansible-playbook -i "$INVENTORY" site.yml
echo "\n===== 部署完成 ====="
#!/bin/bash
# health-check.sh - 全面健康检查
set -euo pipefail
check_disk() {
local threshold=80
df -h | awk "NR>1 && int(\$5)>$threshold {print "⚠️ "\$6" 已用"\$5}"
}
check_memory() {
local avail=$(free | grep Mem | awk '{print $7}')
[[ $avail -lt 100000 ]] && echo "⚠️ 内存不足: $(free -h | grep Mem | awk '{print $7}') 可用"
}
check_load() {
local load=$(cat /proc/loadavg | awk '{print $1}')
local cores=$(nproc)
echo "负载: $load / $cores核"
}
check_services() {
for svc in nginx sshd cron; do
systemctl is-active "$svc" &>/dev/null && echo "✅ $svc" || echo "❌ $svc"
done
}
echo "===== 健康检查 ====="
check_disk
check_memory
check_load
check_services
| 阶段 | 课程 | 核心技能 |
|---|---|---|
| 文件系统 | 01-06 | 分区、LVM、权限、维护 |
| 用户与进程 | 07-12 | 用户管理、systemd、cron |
| 网络配置 | 13-18 | 网络、防火墙、SSH、Nginx |
| Shell脚本 | 19-24 | Bash、awk/sed、正则、调试 |
| 自动化 | 25-30 | Ansible、监控、备份、项目 |
🎉 恭喜完成全部30课学习!
✅ 文件系统:从分区到LVM到维护
✅ 用户与进程:用户管理、systemd、定时任务
✅ 网络配置:网络、防火墙、SSH、Web服务
✅ Shell脚本:Bash编程、文本处理、正则
✅ 自动化:Ansible、监控、备份、综合项目
你已具备Linux系统管理员的全面技能!
| 书名 | 作者 | 重点 |
|---|---|---|
| Linux命令行与Shell脚本编程大全 | Blum | Shell脚本全面覆盖 |
| UNIX/Linux系统管理技术手册 | Nemeth | 系统管理圣经 |
| Ansible: Up and Running | Lintner | Ansible实战 |
| 鸟哥的Linux私房菜 | 鸟哥 | 中文经典入门 |
| 认证 | 机构 | 级别 |
|---|---|---|
| LFCS | Linux Foundation | 基础系统管理 |
| LFCE | Linux Foundation | 高级系统工程师 |
| RHCSA | Red Hat | Red Hat管理员 |
| RHCE | Red Hat | Red Hat工程师 |
| CKA/CKAD | CNCF | Kubernetes管理员/开发者 |
# 文本处理速查
grep -E 'pattern' file # 扩展正则搜索
sed -i 's/old/new/g' file # 替换
awk '{print $1}' file # 提取列
sort | uniq -c | sort -rn # 频次统计
cut -d: -f1 file # 切列
tr 'A-Z' 'a-z' # 转小写
# 系统管理速查
systemctl status/start/stop/restart service
journalctl -u service -f # 跟踪日志
df -h / du -sh * # 磁盘使用
ps aux --sort=-%mem # 内存排序
ss -tlnp # 监听端口
iptables -L -n # 防火墙规则
crontab -e # 编辑定时任务
useradd -m -s /bin/bash user # 创建用户
# 网络诊断速查
ip addr / ip route # 网络配置
ping / traceroute # 连通测试
dig / nslookup # DNS查询
curl -I url # HTTP头检查
nc -zv host port # 端口测试
tcpdump -i eth0 port 80 # 抓包
$ uname -a
Linux VM-4-3-ubuntu 6.8.0-101-generic #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 9 10:15:05 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
$ uptime
22:26:08 up 20:10, 0 user, load average: 0.46, 0.63, 0.61
$ free -h
total used free shared buff/cache available Mem: 7.5Gi 2.3Gi 1.2Gi 49Mi 4.4Gi 5.2Gi Swap: 9.9Gi 159Mi 9.8Gi
$ df -h | head -5
Filesystem Size Used Avail Use% Mounted on tmpfs 769M 1.1M 768M 1% /run /dev/vda2 79G 29G 47G 39% / tmpfs 3.8G 49M 3.8G 2% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock
| 级别 | 名称 | 特征 |
|---|---|---|
| L1 | 手动 | 全手动,无文档 |
| L2 | 脚本化 | 有脚本,手动触发 |
| L3 | 自动化 | Ansible,版本控制 |
| L4 | 自服务 | 开发自助,运维审核 |
| L5 | AIOps | 自愈,智能运维 |
# Flask运维平台示例
from flask import Flask
import subprocess
app = Flask(__name__)
@app.route('/api/health')
def health():
r = subprocess.run(['./health-check.sh'], capture_output=True, text=True)
return r.stdout
@app.route('/api/deploy/')
def deploy(env):
if env not in ['staging', 'production']: return 'Invalid', 400
r = subprocess.run(['./deploy.sh', env], capture_output=True, text=True)
return r.stdout
# 改进循环:
# 事故复盘 → 改进项 → 自动化机会 → Playbook/脚本
# 月度量: MTTR, 变更成功率, 告警准确率
在实际生产环境中,DevOps文化与实践是系统管理员必须深入掌握的核心能力。本节将探讨常见场景、最佳实践和避坑指南。
开发环境和生产环境的差异是脚本出错的常见原因。建议:
优化策略:
改善方法:
#!/bin/bash
# DevOps文化与实践最佳实践模板
set -euo pipefail
# 1. 参数校验
[[ $# -lt 1 ]] && echo "Usage: $0 <arg>" >&2 && exit 1
# 2. 环境检查
require_cmd() {
command -v "$1" >/dev/null || { echo "需要: $1" >&2; exit 1; }
}
# 3. 清理机制
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT
# 4. 日志记录
log() { echo "[$(date +%T)] $*"; }
err() { log "ERROR: $*" >&2; exit 1; }
# 5. 主逻辑
main() {
log "开始处理: $1"
# 业务逻辑
log "处理完成"
}
main "$@"