一、图书定位与适用读者
- 定位:面向系统管理员、DevOps 工程师的 Ansible 入门到进阶实战指南(2015年第二版)。
- 前置知识:具备基础 Linux 操作与网络概念即可,无需 Puppet/Chef 经验;书中涵盖 BIND、MySQL 等守护进程示例,可帮助读者边学边用。
- 特色:以“极简配置管理”为核心,突出 Ansible 的零客户端、无服务器、YAML 易读等优势。
二、全书结构速览
章节 |
核心主题 |
关键词 |
第1章 起步 |
安装(yum/apt/pip/source)、Inventory、ad-hoc 命令、Windows 支持 |
ping、setup、文件模块 |
第2章 简易 Playbook |
YAML 三要素(target/vars/tasks)、模板、handler、set_fact、pause |
Jinja2、模板化配置 |
第3章 高级 Playbook |
并行/异步、循环、条件、委托、变量魔法(hostvars/groups/group_names…)、调试 |
async/poll、when、delegate_to |
第4章 大型项目 |
Includes(task/handler/playbook)、Roles、标签、pull 模式、Vault 加密 |
role 目录结构、tags、ansible-pull |
第5章 自定义扩展 |
Bash/Python 模块、外部 Inventory、插件体系(Connection/Lookup/Filter/Callback) |
module_common.py、CSV→JSON、插件钩子 |
三、关键概念精要
-
无代理架构
- 仅控制端需安装(Python 2.6+、paramiko、PyYAML、Jinja2)。
- 受管端仅需 Python 2.4+(Windows 需 PowerShell 3.0+ 与 WinRM)。
-
Inventory 多源支持
- 静态 INI、动态脚本(CSV、CMDB、云 API)。
- 变量优先级:Play vars > Inventory > Facts。
-
幂等设计
- 模块自带 changed=true/false,避免重复执行。
- check 模式可预览变更,diff 模式查看文本差异。
-
并发与性能
- 默认 5 并发,async/poll 支持长任务与“fire-and-forget”。
- Pull 模式适合大规模自动扩缩容场景。
-
安全
- Vault 加密敏感变量文件;支持密码文件或交互式输入。
- 细粒度 sudo/become 控制。
四、实战亮点示例
- 模板化 Nginx 配置:利用 Jinja2 循环自动生成
listen
指令,按主机 IP 动态渲染。
- MySQL 调优:通过 set_fact 计算
innodb_buffer_pool_size = ansible_memtotal_mb/2
。
- 跨平台包管理:使用 when 条件一句搞定
yum
vs apt
。
- 自动扩缩容:AWS EC2 模块 + add_host 动态加入新实例并继续配置。
- CI/CD 集成:Callback 插件把 playbook 结果推送到 Slack / Syslog / CMDB。
五、二次开发指南
- 模块开发
- Bash:直接输出
key=value
;利用 test-module
本地调试。
- Python:继承
AnsibleModule
,自动处理参数、JSON 输出、错误码。
- 插件体系
- Connection:自定义传输(除 SSH/WinRM 外)。
- Lookup:读取外部 JSON、DNS TXT、环境变量。
- Filter:Jinja2 扩展,如计算集群仲裁人数。
- Callback:任务级钩子,用于通知、审计、报表。
六、阅读与实践建议
- 先跑通示例:按章节顺序完成 ping → setup → 模板 → role 的闭环。
- 拆分项目:将 playbook 拆为 roles,再用 site.yml 聚合,配合 tags 实现快速回滚。
- 生产落地:结合 Vault 管理密钥,使用 Pull 模式做自动修复,用 Callback 汇总报表。
- 持续跟进:官方文档 docs.ansible.com 与 GitHub 源码是最佳补充;2.0 起支持 Python 3、并行恢复等特性。
七、一句话总结
《Ansible Configuration Management 2nd Edition》以“简单即强大”为信条,从零搭建到企业级自动化,覆盖安装、语法、高级技巧、性能优化与二次开发,是系统管理员迈向基础设施即代码(IaC)的高效指南。