第一章:运维自动化概述

大家好,我是你们这门课的老朋友。做了十几年运维,踩过无数坑,也攒了不少经验。今天咱们聊聊运维自动化——说白了,就是怎么让机器替人干活。

什么是运维自动化?

运维自动化,不是简单地写几个脚本就完事了。它是一套方法论,把重复的、标准化的运维操作,交给程序去执行。我个人习惯把它分成三个层次:

  • 脚本层:写个Python或Shell脚本,完成单个任务,比如批量改密码。
  • 工具层:用Ansible、SaltStack这类工具,管理成百上千台机器。
  • 平台层:搭建一套完整的运维平台,从监控到发布,全自动流转。

你想想看,以前运维被人叫“搬砖的”,就是因为整天在重复劳动。自动化就是要把这些砖,交给机器去搬。

为什么需要运维自动化?

这个问题我问过很多刚入行的朋友。答案五花八门,但核心就三个字:扛不住

我在项目中遇到过一家创业公司,服务器从10台涨到500台,运维团队还是3个人。结果呢?每天凌晨都在手动部署,出一次故障就要通宵。这就是典型的“人肉运维”瓶颈。

具体来说,自动化能解决这些痛点:

痛点 手动运维 自动化运维
效率低下 部署1台机器要30分钟 批量部署100台只要5分钟
人为失误 漏改配置、输错命令 标准化执行,零误差
响应迟缓 故障发现靠人工巡检 自动告警+自愈
知识流失 操作步骤记在个人笔记里 脚本和配置统一管理

核心观点:自动化的本质不是取代运维,而是把运维从“救火队员”变成“架构师”。

自动化能解决哪些痛点?

我挑几个最典型的场景说说。嗯,这些都是我亲身经历过的。

1. 环境一致性

以前最怕听到“在我机器上是好的啊”。开发环境、测试环境、生产环境,配置稍微差一点,就出幺蛾子。自动化脚本可以保证:代码+配置+环境三者完全一致。

2. 故障自愈

我记得有一次,凌晨3点磁盘满了。以前得爬起来手动清理。现在呢?写个脚本监控磁盘使用率,超过90%自动清理日志,超过95%直接扩容。我可以在被窝里睡大觉。

3. 变更管理

改个nginx配置,手动操作容易漏掉reload。自动化脚本可以做到:先备份、再修改、最后验证。每一步都有日志,出了问题也能快速回滚。

避坑指南:我曾经犯过一个错误——把所有自动化脚本都跑在root权限下。结果一个bug导致批量删库。后来我学乖了,每个脚本都要做权限最小化,并且加上“确认执行”的交互步骤。

自动化脚本的典型应用场景

说了这么多理论,咱们看看实际能干什么。我按日常运维的流程,列几个高频场景:

  1. 批量操作:给500台服务器同步hosts文件、修改内核参数。
  2. 监控告警:CPU超过80%自动发钉钉消息,并记录现场信息。
  3. 自动部署:代码提交后,自动拉取、编译、打包、发布到测试环境。
  4. 日志分析:每天凌晨分析nginx日志,统计QPS、错误率,生成报表。
  5. 数据库备份:定时备份MySQL,保留最近7天数据,自动上传到OSS。
  6. 安全巡检:检查服务器是否有弱密码、未打补丁、异常登录。

这里给个简单的Python脚本示例,看看自动化到底长什么样:

#!/usr/bin/env python3
# 批量检查服务器磁盘使用率
import paramiko

servers = ['192.168.1.10', '192.168.1.11', '192.168.1.12']
username = 'ops'
password = 'your_password'

for ip in servers:
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username=username, password=password)
    
    stdin, stdout, stderr = client.exec_command('df -h / | tail -1')
    output = stdout.read().decode()
    usage = output.split()[4].replace('%', '')
    
    if int(usage) > 80:
        print(f'[警告] {ip} 磁盘使用率: {usage}%')
    else:
        print(f'[正常] {ip} 磁盘使用率: {usage}%')
    
    client.close()

小提示:实际生产环境不建议硬编码密码。可以用密钥认证,或者从Vault这类工具动态获取凭证。后面章节我会详细讲安全实践。

总结一下

运维自动化不是什么高深莫测的东西。说白了,就是把“人肉操作”变成“代码执行”。刚开始可能觉得写脚本比手动操作还慢,但一旦规模上来,你就知道它的威力了。

这门课我会带着大家,从最简单的脚本开始,一步步搭建自己的自动化体系。下一章咱们就动手写第一个Python运维脚本,敬请期待。

记住一句话:自动化不是目的,稳定高效才是