首页»Ansible»Ansible 自动化运维实践指南 - 极客运维

Ansible 自动化运维实践指南

当服务器从三五台增长到几十上百台,手工登录执行命令的方式就会成为瓶颈。Ansible 以无 Agent、基于 SSH 的方式,把配置下发、批量执行、状态编排收敛成可版本管理的 Playbook。本页从极客运维的实践视角出发,梳理 Ansible 的目录组织、常用模块、幂等思路与排障方法,帮你在真实环境中把自动化真正跑起来,而不是停留在示例复制。

为什么选择 Ansible 作为自动化入口

无 Agent 架构

目标机只需 SSH 与 Python 环境,无需预装客户端,接入成本低,适合存量环境渐进改造。

幂等与可重复

模块描述目标状态而非执行步骤,同一份 Playbook 反复运行结果一致,降低误操作风险。

与现有工具链衔接

可直接编排 Nginx、Docker、Kubernetes 与监控组件,与 Git、Jenkins 组合成发布流水线。

核心概念与目录组织

一套可维护的 Ansible 工程,关键在于把清单、变量、角色与入口 Playbook 分离。inventory 描述主机与分组,group_vars 与 host_vars 承载差异化参数,roles 把任务、模板、处理器按职责拆开,site.yml 只做编排入口。这样新增一台机器时,改动的是数据而不是逻辑。

  • inventory:静态文件或动态插件,按环境与角色分组
  • group_vars / host_vars:环境差异集中管理,避免硬编码
  • roles:tasks、handlers、templates、files、defaults 五件套
  • ansible.cfg:统一并发、超时、日志与 SSH 参数
Ansible 目录结构示意

常用模块速查

模块 典型用途 注意事项
copy / template下发配置与脚本模板变量配合 handlers 触发重载
service / systemd服务启停与开机自启注意 daemon_reload 的时机
yum / apt软件包安装与升级锁定版本避免漂移
shell / command无专用模块时的兜底需自行保证幂等,慎用 creates 判断

从手动到自动的落地节奏

1

先收敛信息

整理主机清单与分组,把现有手工步骤写成文档,明确每步的输入输出与判断依据。

2

小范围验证

先在测试分组用 --check 与 --diff 观察变更,确认无误再扩大范围,避免一次性全量下发。

3

纳入版本与流水线

Playbook 进 Git,配合 Jenkins 触发执行,保留每次运行的日志与变更记录便于回溯。

常见问题

执行报 SSH 连接失败怎么办?

先确认 inventory 中的地址与端口,再检查目标机的 authorized_keys 与 sshd 配置,必要时用 -vvv 查看握手细节。

Playbook 重复执行会重复变更吗?

优先使用幂等模块;shell 与 command 需自行加判断条件,否则每次都会标记为 changed。

如何处理多环境差异?

用 group_vars 按环境目录分层,配合 -i 指定不同 inventory,避免在任务里写死地址与路径。

把重复劳动交给 Playbook

从一台机器的配置固化开始,逐步扩展到整组主机,让每次变更都可复现、可回滚。

返回首页继续探索

相关阅读