吃透 Ansible:核心源碼剖析與項目實戰

吃透 Ansible:核心源碼剖析與項目實戰

作者: 沈聰
出版社: 機械工業
出版在: 2021-07-01
ISBN-13: 9787111685807
ISBN-10: 7111685806
裝訂格式: 平裝
總頁數: 479 頁





內容描述


本書從Ansible的模塊運行及Playbook的解析與執行兩個方面剖析三個版本的Ansible源碼,此外還會優化和改造用於部署Ceph集群的ceph-ansible項目。
本書共6章:第1章介紹Ansible 1.1的源碼,重點剖析Ansible 1.1的底層通信機制和模塊運行原理;第2章在第1章的基礎上對Ansible 1.9.6的源碼進行解析,重點比較Ansible 1.9.6與Ansible 1.1源碼的不同之處,以及Ansible 1.9.6中Playbook的運行過程;第3章介紹Ansible 2.8中的部分核心模塊及Playbook的常用語法;第4章介紹Ansible 2.8中的核心源碼並完整跟蹤模塊運行的全過程;第5章以小版本的源碼對比及GitHub上的Bug溯源兩種方式探討深入學習Ansible源碼的方式;第6章介紹基於Ansible的Playbook項目ceph-ansible,並依據實際工作需求對其進行改造和深度優化,幫助讀者理解Playbook項目的編寫方法。
本書適合Python初中級程序員閱讀,尤其適合Python運維開發工程師和Ansible愛好者閱讀。對於Python程序員而言,本書能帶領他們一窺Python頂級項目的內部原理,並通過閱讀開源項目的源碼,提升自己的編程水平。


目錄大綱


前言
第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的Playbook 29
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.6 102
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 2 201
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中的ChangeLog 391
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-ansible 433
6.4 ceph-ansible項目源碼探索 446
6.4.1 追蹤ceph-mon服務的搭建過程 446
6.4.2 在CentOS 7下部署Ceph集群的簡化版Playbook 469
6.4.3 小結 479


作者介紹


沈聰畢業於武漢大學,獲碩士學位。
目前就職於天翼雲科技有限公司,任高級後端開發工程師一職。
2018年從Java開發轉崗為Python運維開發,在雲公司的媒體存儲項目中參與存儲集群建設、集群部署及統一運維管理平台的開發工作。
喜愛鑽研Python相關工具的源碼,曾經研究過Django、Ansible、SaltStack和Scrapy等熱門框架的源碼並做了大量的筆記。
在慕課網上發布過Nginx、Django和Scrapy等相關課程。




相關書籍

Programming AWS Lambda: Build and Deploy Serverless Applications with Java

作者 John Chapin Mike Roberts

2021-07-01

循序漸進學Docker

作者 李金榜

2021-07-01

Core Kubernetes

作者 Vyas Jay Love Chris

2021-07-01