奔跑吧Ansible(第2版)
Lorin Hochstein, René Moser 著
贝壳找房SRE团队 译
出版时间:2018年10月
页数:412
在当下百家争鸣的配置管理工具领域中,Ansible有着独特的优势:
原生即轻量。你不需要在要管理的机器上安装任何软件,并且它的学习曲线非常平缓。在第2版中,不管你是要将代码部署到生产环境的开发者还是寻求更好的自动化解决方案的系统管理员,这本使用指南都将帮助你快速地在生产环境中使用这个工具。
作者Lorin Hochstein和René Moser示范了如何编写playbook(Ansible中的配置管理脚本)及管理远程服务器。除此之外,他们还会带领你探索这个工具的潜在法宝:内置模块。通过阅读本书,你会发
现,Ansible拥有你所需要的功能的同时,还简单得超出你的想象。
● 理解Ansible区别于其他配置管理系统的特点
● 使用YAML语法编写你自己的playbook
● 部署一个复杂应用的完整范例
● 管理Windows服务器和自动化配置网络设备
● 将应用部署到Amazon EC2或其他云平台
● 使用Ansible创建Docker镜像并部署Docker容器
最好从头开始阅读本书,后面的章节建立在前面章节的基础之上。因为它是以教程风格编写的,所以你可以在自己的机器上跟随讲解一步步操作。并且,大多数实例都与Web应用程序相关,对于生产环境非常有借鉴意义。
  1. 第2版前言
  2. 第1版前言
  3. 第1章 简介
  4. 关于版本的说明
  5. Ansible的优势
  6. Ansible如何运作
  7. Ansible的精妙设计赏析
  8. 易读的语法
  9. 远程主机无须安装依赖
  10. 基于推送模式
  11. 使用Ansible管理小规模环境
  12. 内置模块
  13. 非常轻量的抽象层
  14. Ansible太过于简单了吗
  15. 需要哪些基础知识
  16. 哪些内容不会涉及
  17. 安装Ansible
  18. 建立一台用于测试的服务器
  19. 使用Vagrant来创建测试服务器
  20. 将测试服务器的信息配置在Ansible中
  21. 使用ansible.cfg文件来简化配置
  22. 展望
  23. 第2章 playbook:一切的开始
  24. 一些准备工作
  25. 一个简单的playbook
  26. 定义Nginx的配置文件
  27. 创建一个定制的首页
  28. 创建一个webservers群组
  29. 运行这个playbook
  30. YAML格式的playbook
  31. 文件起始
  32. 注释
  33. 字符串
  34. 布尔型
  35. 列表
  36. 字典
  37. 分行
  38. 剖析playbook
  39. play
  40. task
  41. 模块
  42. 将它们整合在一起
  43. 执行Ansible后发生变化了吗?跟踪主机状态
  44. 来点更酷炫的:添加TLS支持
  45. 生成TLS证书
  46. 变量
  47. 生成Nginx配置模板
  48. handler
  49. 运行playbook
  50. 第3章 使用inventory描述你的服务器
  51. inventory文件
  52. 准备工作:创建多台Vagrant虚拟机
  53. inventory行为参数
  54. ansible_connection
  55. ansible_shell_type
  56. ansible_python_interpreter
  57. ansible_*_interpreter
  58. 改变行为参数的默认值
  59. 群组
  60. 范例:部署一个Django应用
  61. 别名和端口
  62. 群组的群组
  63. 为主机编号(宠物还是公牛)
  64. 在inventory内部的主机和组变量
  65. 在各自文件中的主机和组变量
  66. 动态inventory
  67. 动态inventory脚本接口
  68. 编写动态inventory脚本
  69. 预装inventory脚本
  70. 将inventory分割到多个文件
  71. 使用add_host和group_by在运行时添加条目
  72. add_host
  73. group_by
  74. 第4章 变量与fact
  75. 在playbook中定义变量
  76. 检查变量的值
  77. registering变量
  78. fact
  79. 查看与某台服务器关联的所有fact
  80. 查看fact子集
  81. 任何模块都可以返回fact
  82. 本地fact
  83. 使用set_fact定义新变量
  84. 内置变量
  85. hostvars
  86. inventory_hostname
  87. groups
  88. 在命令行设置变量
  89. 优先级
  90. 第5章 引入测试应用:Mezzanine
  91. 为什么向生产环境部署软件是一件复杂的事
  92. PostgreSQL:数据库
  93. Gunicorn:应用服务器
  94. Nginx:Web服务器
  95. Supervisor:进程管理器
  96. 第6章 使用 Ansible部署Mezzanine
  97. 列出playbook中的task
  98. 组织要部署的文件
  99. 变量和秘密变量
  100. 使用迭代(with_items)安装多个软件包
  101. 向任务中添加Become语句
  102. 更新apt缓存
  103. 使用Git获取项目源码
  104. 将Mezzanine和其他软件包安装到virtualenv中
  105. 任务中的复杂参数:稍微跑个题
  106. 配置数据库
  107. 从模板生成local_settings.py文件
  108. 运行django-manage命令
  109. 在应用环境中运行定制的Python脚本
  110. 设置服务配置文件
  111. 启用Nginx配置文件
  112. 安装TLS证书
  113. 安装Twitter计划任务
  114. playbook全文
  115. 在Vagrant虚拟机上运行playbook
  116. 故障排查
  117. 无法拉取Git仓库代码
  118. 192.168.33.10.xip.io地址不可达
  119. 错误的请求(400)
  120. 将Mezzanine部署到多台主机
  121. 第7章 role:扩展你的playbook
  122. role的基本构成
  123. 范例:database和mezzanine role
  124. 在你的playbook中使用role
  125. pre-tasks和post-tasks
  126. 用于部署数据库的database role
  127. 用于部署Mezzanine的mezzanine role
  128. 使用ansible-galaxy创建role文件与目录
  129. 从属role
  130. Ansible Galaxy
  131. Web界面
  132. 命令行工具
  133. 将你自己的role发布到Galaxy
  134. 第8章 复杂的playbook
  135. 处理不良行为的命令:changed_when和failed_when
  136. 过滤器
  137. 默认过滤器
  138. 用于注册变量的过滤器
  139. 应用于文件路径的过滤器
  140. 编写你自己的过滤器
  141. lookup
  142. file
  143. pipe
  144. env
  145. password
  146. template
  147. csvfile
  148. dnstxt
  149. redis_kv
  150. etcd
  151. 编写你自己的lookup插件
  152. 更复杂的循环
  153. with_lines
  154. with_fileglob
  155. with_dict
  156. 将循环结构用作lookup插件
  157. 循环控制
  158. 设置变量名称
  159. 为输出增加标签
  160. include
  161. 动态引用
  162. role include
  163. block
  164. 利用block进行异常处理
  165. 使用Vault加密敏感数据
  166. 第9章 自定义host、run和 handler
  167. 通过模式匹配指定主机
  168. 限制运行的主机
  169. 在控制主机上运行task
  170. 在涉及的主机以外的机器上运行task
  171. 逐台主机运行
  172. 一次运行一批主机
  173. 只执行一次
  174. 运行策略
  175. linear策略
  176. free策略
  177. 高级handler
  178. Pre和Post task中的handler
  179. flush handler
  180. handlers listen
  181. 手动采集fact8
  182. 从主机获取IP地址
  183. 第10章 回调插件
  184. stdout插件
  185. actionable插件
  186. debug插件
  187. dense插件
  188. json插件
  189. minimal插件
  190. oneline插件
  191. selective 插件
  192. skippy插件
  193. 其他插件
  194. foreman插件
  195. hipchat插件
  196. jabber插件
  197. junit插件
  198. log_plays插件
  199. logentries插件
  200. logstash插件
  201. mail插件
  202. osx_say插件
  203. profile_tasks插件
  204. slack插件
  205. timer插件
  206. 第11章 让Ansible快到飞起
  207. SSH多路复用以及长连接保持
  208. 手动启动SSH多路复用
  209. Ansible中的SSH多路复用配置
  210. 流水线
  211. 启用流水线
  212. 将主机配置为支持流水线
  213. fact缓存
  214. JSON文件作为fact缓存后端
  215. Redis作为fact缓存后端
  216. Memcached作为fact缓存后端
  217. 并行
  218. 异步执行并发任务
  219. 第12章 自定制模块
  220. 范例:检测远程服务器是否可达
  221. 使用script模块而不是自己写模块
  222. 实现can_reach模块
  223. 在哪里放置自定制模块
  224. Ansible如何调用模块
  225. 用参数生成一个独立的Python脚本(只限于Python模块)
  226. 将模块复制到服务器
  227. 在服务器上创建一个参数文件(只限于非Python模块)
  228. 调用模块
  229. 期望输出
  230. Ansible的输出变量
  231. 用Python实现模块
  232. 解析参数
  233. 获取参数的值
  234. 导入AnsibleModule辅助类
  235. 参数选项
  236. AnsibleModule的初始化参数
  237. 返回成功或失败
  238. 调用外部命令
  239. 检查模式 (演习模式 )
  240. 文档化你的模块
  241. 调试模块
  242. 使用Bash实现模块
  243. 指定Bash的解释器路径
  244. 示例模块
  245. 第13章 Vagrant
  246. Vagrant的便捷配置选项
  247. 端口转发和私有IP地址
  248. 代理转发
  249. Ansible置备器
  250. 置备器何时运行
  251. 由Vagrant生成inventory
  252. 并行配置
  253. 指定群组
  254. Ansible本地置备器
  255. 第14章 Amazon.EC2
  256. 术语
  257. 实例
  258. Amazon系统镜像
  259. 标签
  260. 指定认证凭据
  261. 环境变量
  262. 配置文件
  263. 必要条件:Boto Python库
  264. 动态inventory
  265. inventory缓存
  266. 其他配置项
  267. 自动生成群组
  268. 使用标签定义动态群组
  269. 把标签应用到现有资源
  270. 更好听的群组名
  271. EC2 Virtual Private Cloud和EC2 Classic
  272. 配置ansible.cfg支持使用EC2
  273. 启动新的实例
  274. EC2密钥对
  275. 创建新的密钥
  276. 上传已有密钥
  277. 安全组
  278. 允许的IP地址
  279. 安全组端口
  280. 获取最新的AMI
  281. 向群组中添加一个新的实例
  282. 等待服务器启动
  283. 创建实例的幂等性方法
  284. 全部加在一起
  285. 指定Virtual Private Cloud
  286. 动态inventory和VPC
  287. 构建AMI
  288. 使用ec2_ami模块
  289. 使用Packer
  290. 其他模块
  291. 第15章 Docker
  292. Docker与Ansible配合案例
  293. Docker应用的生命周期
  294. 样例应用:Ghost
  295. 连接到Docker Daemon
  296. 在本地机器上运行容器
  297. 从Dockerfile构建镜像
  298. 在本机上对多个容器进行编排
  299. 推送镜像到Docker registry
  300. 查询本地镜像
  301. 部署Docker化的应用
  302. 后端:Postgres
  303. 前端
  304. 前端:Ghost
  305. 前端:Nginx
  306. 清除容器
  307. 直连容器
  308. Ansible Container
  309. Conductor
  310. 创建Docker镜像
  311. 本地运行
  312. 发布镜像到registry
  313. 将容器部署到生产环境
  314. 第16章 调试Ansible.playbook
  315. 人类可读的错误信息
  316. 调试SSH问题
  317. debug模块
  318. playbook调试器
  319. assert模块
  320. 在执行前检查你的playbook
  321. 语法检查
  322. 列出host
  323. 列出task
  324. 检测模式
  325. 显示文件变化
  326. 限制指定的task运行
  327. step
  328. start-at-task
  329. tags
  330. 第17章 管理Windows主机
  331. 连接Windows
  332. PowerShell
  333. Windows模块
  334. 第一个playbook
  335. 升级Windows
  336. 添加本地用户
  337. 结论
  338. 第18章 使用Ansible管理网络设备
  339. 网络模块现状
  340. 所支持的网络供应商列表
  341. 网络设备的准备工作
  342. 支持SSH身份验证
  343. 模块如何工作
  344. 我们的第一个playbook
  345. 网络模块中的inventory和变量
  346. 本地连接
  347. 连接配置
  348. 身份验证变量
  349. 保存配置
  350. 使用文件中的配置
  351. 模板,模板,模板
  352. 收集fact
  353. 结论
  354. 第19章 Ansible.Tower:Ansible企业版
  355. 订阅模式
  356. 试用Ansible Tower
  357. Ansible Tower能解决什么问题
  358. 访问控制
  359. 项目管理
  360. inventory管理
  361. 按作业模板运行作业
  362. RESTful API
  363. Ansible Tower的命令行
  364. 安装
  365. 创建用户
  366. 运行作业
  367. 以终为始
  368. 附录A SSH
  369. 附录B 在EC2认证中使用IAM.role
  370. 术语表
  371. 参考文献
书名:奔跑吧Ansible(第2版)
作者:Lorin Hochstein, René Moser 著
译者:贝壳找房SRE团队 译
国内出版社:电子工业出版社
出版时间:2018年10月
页数:412
书号:978-7-121-35144-0
原版书书名:Ansible: Up and Running
原版书出版商:O'Reilly Media
Lorin Hochstein
 
René Moser