Ansible 配置编排
面向 运维 / DevOps 的 Ansible 实战系列。目标不是背模块参数大全,而是能独立设计并交付一套幂等、可复用、可审计、可安全变更的配置编排工程。
读完本系列,你应当能:
- 从零搭好控制节点,并对一批 Linux 主机做标准化初始化
- 用 Inventory + 变量分层管理多环境,而不是把 IP 和密码写死在 playbook 里
- 熟练选用声明式模块,再把「装软件 → 改配置 → 滚动重启」写成可重复执行的 Role
- 在上线前用 check/diff/serial 控制爆炸半径,用 Vault 管密钥
本系列解决什么问题
运维日常里,下面这些活最适合 Ansible:
| 场景 | 为什么适合 Ansible |
|---|---|
| 新机器初始化 | 用户、SSH、时区、基础包、监控 Agent,状态可声明 |
| 批量改配置 | Nginx、sshd、sysctl,可 diff、可回滚到 Git 版本 |
| 滚动发布/重载 | 分批执行,挂一台不至于全挂 |
| 配置漂移收敛 | 定期跑同一 playbook,把手工改乱的状态拉回来 |
不太适合硬套 Ansible 的:
与 Python / Terraform 的边界
| 工具 | 更擅长 | 典型产出 |
|---|---|---|
| Ansible | 已有机器上的配置、包、服务、文件状态 | Role、Playbook、Inventory |
| Terraform | 云主机、网络、LB、DNS、托管库的生命周期 | .tf、state |
| Python | API 粘合、巡检逻辑、非标准流程 | 脚本、小服务 |
推荐组合:Terraform 起机器 → Ansible 做初始化与持续配置 → Python 补巡检/对接平台 API。三者可以在同一套 GitOps 流程里协作,但职责不要搅在一个 playbook 里。
学习路线(9 篇)
| 序号 | 文档 | 你将能做到 |
|---|---|---|
| 1 | 01 安装与连通 | 装好控制节点,SSH 免密,ping 全绿 |
| 2 | 02 清单与变量 | 分组、host/group_vars、查清「最终用的是哪个值」 |
| 3 | 03 常用模块 | 先掌握模块:文件、包、用户、服务、下载、探测等 |
| 4 | 04 Playbook | 再学编排:handler / when / loop / tags |
| 5 | 05 Role | 拆角色、定 defaults 接口、跨项目复用 |
| 6 | 06 安全变更 | check/diff/serial,变更可预览、可限流 |
| 7 | 07 Vault | 敏感变量加密入库,CI 安全解密 |
| 8 | 08 综合实战 | 标准仓库结构 + 综合初始化项目 |
建议顺序阅读:模块 → Playbook → Role。若已熟悉常用模块,可从第 4 篇加速,但第 2、7 篇的变量与密钥规范仍建议补上。
环境与仓库约定
全文示例默认:
- ansible-core 2.15+(或发行版等价版本)
- 控制节点:macOS / Linux
- 托管节点:Debian/Ubuntu 为主;涉及包管理处会给出 RHEL 对照
- 练习根目录:
~/ansible-for-ops
~/ansible-for-ops/
├── ansible.cfg
├── inventory/
│ ├── staging.ini
│ └── prod.ini
├── group_vars/
├── host_vars/
├── playbooks/
├── roles/
└── files/ # 可选:跨角色静态文件
密钥与敏感信息
文档中的密码、Token、IP、域名均为占位符。真实密钥只进 Vault 或本机未入库文件;示例里不会出现可用的真实凭据。
版本说明
模块示例优先使用 FQCN(如 ansible.builtin.copy)。若你的环境是较老的 Ansible 2.9,可去掉命名空间前缀,但建议尽快升级到 ansible-core。
从左侧进入 安装、SSH 与第一次连通 开始动手。