《吃透Ansible:核心源码剖析与项目实战》从Ansible的模块运行以及Playbook的解析和执行两个方面剖析了三个版本的Ansible源码。此外,还优化和改造了用于部署Ceph集群的ceph-ansible项目。
本书共6章,第1章介绍Ansible 1.1的底层通信机制和模块运行原理;第2章在第1章的基础上剖析Ansible 1.9.6的源码;第3章介绍Ansible 2.8中的部分核心模块及Playbook的常用语法;第4章介绍Ansible 2.8中的核心源码并完整跟踪模块运行的全过程;第5章以小版本的源码对比及GitHub上的Bug溯源两种方式探讨深入学习Ansible源码的方式;第6章介绍基于Ansible的Playbook项目ceph-ansible。
本书适合初级和中级Python程序员阅读,也适合运维开发工程师和Ansible爱好者阅读。
目录
- 前言
- 第1章 Ansible 1.1源码剖析1
- 1.1 Ansible 1.1的环境搭建1
- 1.1.1 Ansible 1.1测试环境搭建1
- 1.1.2 Ansible 1.1调试环境搭建5
- 1.2 Ansible 1.1的基本使用9
- 1.2.1 Ansible 1.1模块说明9
- 1.2.2 Ansible 1.1的常用模块10
- 1.2.3 编写Ansible 1.1的Playbook29
- 1.2.4 小结31
- 1.3 Ansible 1.1源码概览31
- 1.3.1 非源码文件与目录31
- 1.3.2 源码文件32
- 1.3.3 小结45
- 1.4 Ansible 1.1底层通信代码解析46
- 1.4.1 本地连接插件46
- 1.4.2 基于paramiko模块连接插件53
- 1.4.3 基于SSH命令连接插件61
- 1.4.4 小结68
- 1.5 ping模块的执行流程68
- 1.5.1 ansible命令68
- 1.5.2 runner目录下的核心源码71
- 1.5.3 ping模块的运行流程84
- 1.6 copy模块的执行流程94
- 1.6.1 copy模块的动作插件94
- 1.6.2 copy模块遗留问题的解决96
- 1.6.3 Ansible模块的核心步骤小结99
- 1.7 本章小结100
- 第2章 Ansible 1.9.6源码剖析101
- 2.1 Ansible 1.1和Ansible 1.9.6源码对比101
- 2.2 快速上手Ansible 1.9.6102
- 2.2.1 搭建Ansible 1.9.6测试环境102
- 2.2.2 Ansible 1.9.6中的部分模块剖析103
- 2.2.3 Ansible 1.9.6中Playbook的常用语法125
- 2.3 再探Ansible 1.9.6源码134
- 2.3.1 cache模块134
- 2.3.2 shell_plugins插件138
- 2.3.3 filter_plugins插件142
- 2.3.4 lookup_plugins插件145
- 2.3.5 辅助模块代码148
- 2.4 追踪Ansible 1.9.6的模块运行机制155
- 2.4.1 inventory目录155
- 2.4.2 Runner类及其方法157
- 2.5 解析Playbook的运行逻辑171
- 2.5.1 准备测试的Playbook项目171
- 2.5.2 相关类基础174
- 2.5.3 追踪ansible-playbook命令的运行流程187
- 2.6 本章小结200
- 第3章 Ansible 2常用模块与Playbook语法201
- 3.1 快速上手Ansible 2201
- 3.2 Ansible 2的命令行使用203
- 3.2.1 Ansible 2支持的常见选项203
- 3.2.2 Ansible 2中的常用模块及其源码解析215
- 3.2.3 Ansible 2模块的学习建议241
- 3.3 Ansible 2中的Playbook语法243
- 3.3.1 变量243
- 3.3.2 条件判断248
- 3.3.3 循环语句251
- 3.3.4 等待语句256
- 3.4 本章小结260
- 第4章 Ansible 2核心源码剖析261
- 4.1 Ansible 2.8核心源码初探261
- 4.1.1 日志打印261
- 4.1.2 默认配置262
- 4.1.3 inventory文件解析270
- 4.1.4 模板渲染289
- 4.1.5 插件303
- 4.2 Ansible 2.8模块运行的核心流程分析305
- 4.2.1 命令入口306
- 4.2.2 核心运行模块308
- 4.2.3 流程总结354
- 4.3 Ansible 2.8中Playbook的执行流程追踪355
- 4.3.1 Playbook命令执行入口355
- 4.3.2 核心代码追踪356
- 4.3.3 Playbook中部分语法的源码解析363
- 4.4 本章小结371
- 第5章 Ansible源码的演进跟踪372
- 5.1 Ansible 1.1到Ansible 1.2的演进之路372
- 5.2 Ansible 2.8中的部分Bug溯源391
- 5.2.1 Ansible 2.8中的ChangeLog391
- 5.2.2 Ansible 2.8中的Bug复现及其修复过程394
- 5.3 如何更深入地学习Ansible源码416
- 第6章 Playbook项目实战417
- 6.1 ceph-ansible项目介绍417
- 6.2 ceph-ansible实战418
- 6.2.1 使用ceph-ansible部署Ceph集群418
- 6.2.2 ceph-ansible的其他功能425
- 6.3 一个真实场景的改造429
- 6.3.1 业务需求429
- 6.3.2 手工实现430
- 6.3.3 改造ceph-ansible433
- 6.4 ceph-ansible项目源码探索446
- 6.4.1 追踪ceph-mon服务的搭建过程446
- 6.4.2 在CentOS 7下部署Ceph集群的简化版Playbook469
- 6.4.3 小结479