基于Python的DevOps
Noah Gift, Kennedy Behrman, Alfredo Deza, Grig Gheorghiu
安道 译
出版时间:2022年02月
页数:512
在过去的十年里,技术发生了很大的变化。数据是热门话题,云无处不在,许多组织都需要某种形式的自动化。在这场变革中,Python发展成为世界上最流行的语言之一。这本实用的资料 将向你展示如何使用Python来完成Linux系统的日常管理任务,如何使用当下最火热的DevOps工具,包括Docker、Kubernetes和Terraform。
对数百万专业人士来说,学习如何与Linux交互及实现自动化是必不可少的技能。通过这本书,你将学会如何使用容器开发软件、解决问题,以及如何监控、测试、负载测试和操作你的软件。想寻找借助Python解决问题的有效方法?看这本书绝对没错。
● Python基础知识,简单介绍语言特性。
● 如何自动处理文本,编写命令行工具和自动处理文件系统。
● Linux实用程序、包管理、构建系统、监控、监测和自动化测试。
● 云计算、IaC、Kubernetes和Serverless。
● 站在DevOps的角度探讨机器学习和数据工程。
● 构建、部署和优化一个机器学习项目。
  1. 前言
  2. 第1章 Python DevOps基础知识
  3. 1.1 安装和运行Python
  4. 1.1.1 Python shell
  5. 1.1.2 Jupyter Notebooks
  6. 1.2 过程式程序设计
  7. 1.2.1 变量
  8. 1.2.2 基本的数学运算
  9. 1.2.3 注释
  10. 1.2.4 内置函数
  11. 1.3 执行控制
  12. 1.3.1 if/elif/else
  13. 1.3.2 for循环
  14. 1.3.3 while循环
  15. 1.4 处理异常
  16. 1.5 内置对象
  17. 1.5.1 对象是什么
  18. 1.5.2 对象的方法和属性
  19. 1.5.3 序列
  20. 1.6 函数
  21. 1.6.1 函数剖析
  22. 1.6.2 函数是对象
  23. 1.6.3 匿名函数
  24. 1.7 使用正则表达式
  25. 1.7.1 搜索
  26. 1.7.2 字符集合
  27. 1.7.3 字符类
  28. 1.7.4 分组
  29. 1.7.5 具名分组
  30. 1.7.6 查找所有
  31. 1.7.7 查找迭代器
  32. 1.7.8 替换
  33. 1.7.9 编译
  34. 1.8 惰性求值
  35. 1.8.1 生成器
  36. 1.8.2 生成器推导
  37. 1.9 更多IPython功能
  38. 1.9.1 在IPython中运行UNIX shell命令
  39. 1.9.2 使用IPython的魔法命令
  40. 1.10 练习题
  41. 第2章 文件和文件系统自动化处理
  42. 2.1 读写文件
  43. 2.2 使用正则表达式搜索文本
  44. 2.3 处理大型文件
  45. 2.4 加密文本
  46. 2.4.1 哈希和hashlib
  47. 2.4.2 使用Cryptography库加密
  48. 2.5 os模块
  49. 2.6 使用os.path管理文件和目录
  50. 2.7 使用os.walk遍历目录树
  51. 2.8 使用pathlib处理路径对象
  52. 第3章 使用命令行
  53. 3.1 使用shell
  54. 3.1.1 使用sys模块探知系统信息
  55. 3.1.2 使用os模块处理操作系统
  56. 3.1.3 使用subprocess模块派生进程
  57. 3.2 编写命令行工具
  58. 3.2.1 使用sys.argv
  59. 3.2.2 使用argparse
  60. 3.2.3 使用click
  61. 3.2.4 使用fire
  62. 3.2.5 实现插件系统
  63. 3.3 案例分析:使用命令行工具提速Python
  64. 3.3.1 使用Numba JIT编译器
  65. 3.3.2 通过Python CUDA使用GPU
  66. 3.3.3 使用Numba真正多核多线程运行Python代码
  67. 3.3.4 k均值聚类算法
  68. 3.4 练习题
  69. 第4章 Linux实用程序
  70. 4.1 磁盘实用程序
  71. 4.1.1 衡量性能
  72. 4.1.2 分区
  73. 4.1.3 获取特定的设备信息
  74. 4.2 网络实用程序
  75. 4.2.1 SSH隧道
  76. 4.2.2 使用Apache Benchmark(ab)评测HTTP
  77. 4.2.3 使用molotov做负载测试
  78. 4.3 CPU实用程序
  79. 4.3.1 CPU实用程序简介
  80. 4.3.2 使用htop查看进程
  81. 4.4 使用Bash和ZSH
  82. 4.4.1 自定义Python shell
  83. 4.4.2 递归路径模式匹配
  84. 4.4.3 搜索和替换确认提示
  85. 4.4.4 删除Python临时文件
  86. 4.4.5 列出和筛选进程
  87. 4.4.6 UNIX时间戳
  88. 4.5 Python与Bash和ZSH混合使用
  89. 4.5.1 随机密码生成器
  90. 4.5.2 这个模块是否存在
  91. 4.5.3 进入模块所在的目录
  92. 4.5.4 把CSV文件转换成JSON文件
  93. 4.6 Python单行程序
  94. 4.6.1 调试器
  95. 4.6.2 这段代码的运行速度有多快
  96. 4.7 strace
  97. 4.8 练习题
  98. 4.9 实操题
  99. 第5章 包管理
  100. 5.1 打包简介
  101. 5.1.1 打包的重要性
  102. 5.1.2 何时不需要打包
  103. 5.2 打包准则
  104. 5.2.1 恰当的版本号
  105. 5.2.2 更改日志
  106. 5.3 选择一种策略
  107. 5.4 打包方案
  108. 5.4.1 Python原生包
  109. 5.4.2 Debian包
  110. 5.4.3 RPM包
  111. 5.5 使用systemd管理服务
  112. 5.5.1 长时间运行的进程
  113. 5.5.2 创建项目
  114. 5.5.3 systemd单元文件
  115. 5.5.4 安装单元
  116. 5.5.5 处理日志
  117. 5.6 练习题
  118. 5.7 实操题
  119. 第6章 持续集成和持续部署
  120. 6.1 真实案例分析:把维护不善的WordPress网站转换成Hugo
  121. 6.1.1 设置Hugo
  122. 6.1.2 把WordPress文章转换成Hugo文章
  123. 6.1.3 创建并更新Algolia索引
  124. 6.1.4 使用Makefile编排流程
  125. 6.1.5 使用AWS CodePipeline部署
  126. 6.2 真实案例分析:使用Google Cloud Build把Python应用部署到Google App Engine中
  127. 6.3 真实案例分析:NFSOPS
  128. 第7章 监控和日志
  129. 7.1 构建可靠系统的关键概念
  130. 7.2 不可变的DevOps原则
  131. 7.2.1 集中处理日志
  132. 7.2.2 案例分析:生产数据库塞满硬盘
  133. 7.2.3 自建还是购买?
  134. 7.2.4 容错
  135. 7.3 监控
  136. 7.3.1 Graphite
  137. 7.3.2 StatsD
  138. 7.3.3 Prometheus
  139. 7.4 监测程序
  140. 7.4.1监测程序概述
  141. 7.4.2 命名约定
  142. 7.5 日志
  143. 7.5.1 为什么很难
  144. 7.5.2 basicconfig
  145. 7.5.3 深度配置
  146. 7.5.4 常用模式
  147. 7.6 ELK栈
  148. 7.6.1 Logstash
  149. 7.6.2 Elasticsearch和Kibana
  150. 7.7 练习题
  151. 7.8 实操题
  152. 第8章 pytest在DevOps中的应用
  153. 8.1 测试小钢炮pytest
  154. 8.2 pytest入门
  155. 8.2.1 使用pytest测试
  156. 8.2.2 与unittest的区别
  157. 8.3 pytest特性
  158. 8.3.1 conftest.py
  159. 8.3.2 出色的assert
  160. 8.3.3 参数化
  161. 8.4 固件
  162. 8.4.1 入门
  163. 8.4.2 内置固件
  164. 8.5 基础设施测试
  165. 8.5.1 什么是系统验证
  166. 8.5.2 Testinfra简介
  167. 8.5.3 连接远程节点
  168. 8.5.4 特性和特殊固件
  169. 8.5.5 案例
  170. 8.6 使用pytest测试Jupyter Notebooks
  171. 8.7 练习题
  172. 8.8 实操题
  173. 第9章 云计算
  174. 9.1 云计算基础知识
  175. 9.2 云计算的类型
  176. 9.3 云服务的类型
  177. 9.3.1 IaaS
  178. 9.3.2 MaaS
  179. 9.3.3 PaaS
  180. 9.3.4 Serverless
  181. 9.3.5 SaaS
  182. 9.4 IaC
  183. 9.5 持续交付
  184. 9.6 虚拟化和容器
  185. 9.6.1 硬件虚拟化
  186. 9.6.2 SDN
  187. 9.6.3 SDS
  188. 9.6.4 容器
  189. 9.7 分布式计算面临的挑战和机遇
  190. 9.8 云时代Python的并发、性能和进程管理
  191. 9.9 进程管理
  192. 9.9.1 使用subprocess管理进程
  193. 9.9.2 使用multiprocessing库解决问题
  194. 9.9.3 使用Pool()派生进程
  195. 9.9.4 FaaS和Serverless
  196. 9.9.5 使用Numba提升Python的性能
  197. 9.9.6 使用Numba JIT编译器
  198. 9.9.7 使用高性能服务器
  199. 9.10 小结
  200. 9.11 练习题
  201. 9.12 实操题
  202. 第10章 IaC
  203. 10.1 基础设施自动化工具分类
  204. 10.2 手动配置
  205. 10.3 使用Terraform自动配置基础设施
  206. 10.3.1 配置S3 bucket
  207. 10.3.2 使用ACM配置SSL证书
  208. 10.3.3 配置Amazon CloudFront分配
  209. 10.3.4 配置Route 53 DNS记录
  210. 10.3.5 把静态文件复制到S3中
  211. 10.3.6 删除使用Terraform配置的所有AWS资源
  212. 10.4 使用Pulumi自动配置基础设施
  213. 10.4.1 为AWS新建一个Pulumi Python项目
  214. 10.4.2 为过渡堆栈创建配置值
  215. 10.4.3 配置一个ACM SSL证书
  216. 10.4.4 配置Route 53区域和DNS记录
  217. 10.4.5 配置一个CloudFront分配
  218. 10.4.6 为网站的URL配置一个Route 53 DNS记录
  219. 10.4.7 创建并部署一个新堆栈
  220. 10.5 练习题
  221. 第11章 容器技术:Docker和Docker Compose
  222. 11.1 Docker容器是什么
  223. 11.2 创建、构建、运行及删除Docker映像和容器
  224. 11.3 把Docker映像发布到Docker注册处中
  225. 11.4 使用相同的映像在不同的宿主机中运行Docker容器
  226. 11.5 使用Docker Compose运行多个Docker容器
  227. 11.6 把Docker Compose运行的服务移植到新主机和操作系统中
  228. 11.7 练习题
  229. 第12章 容器编排:Kubernetes
  230. 12.1 Kubernetes相关概念简述
  231. 12.2 使用Kompose根据docker-compose.yaml创建Kubernetes清单
  232. 12.3 使用minikube把Kubernetes清单部署到本地Kubernetes集群
  233. 12.4 在GCP中使用Pulumi创建GKE Kubernetes集群
  234. 12.5 把Flask示例应用部署到GKE中
  235. 12.6 安装Helm chart Prometheus和Grafana
  236. 12.7 销毁GKE集群
  237. 12.8 练习题
  238. 第13章 Serverless技术
  239. 13.1 把同一个Python函数部署到三大云服务商中
  240. 13.1.1 安装Serverless框架
  241. 13.1.2 把Python函数部署到AWS Lambda中
  242. 13.1.3 把Python函数部署到Google Cloud Functions中
  243. 13.1.4 把Python函数部署到Azure中
  244. 13.2 把Python函数部署到自托管的FaaS平台中
  245. 13.2.1 把Python函数部署到自托管的PaaS平台的优势
  246. 13.2.2 把Python函数部署到OpenFaaS中
  247. 13.3 使用AWS CDK配置DynamoDB数据表、Lambda函数和API网关方法
  248. 13.4 练习题
  249. 第14章 MLOps和机器学习工程
  250. 14.1 机器学习是什么
  251. 14.1.1 监督型机器学习
  252. 14.1.2 建模
  253. 14.2 Python机器学习生态环境
  254. 14.2.1 Python机器学习框架和生态系统
  255. 14.2.2 PyTorch深度学习
  256. 14.3 机器学习云平台
  257. 14.4 机器学习成熟模型
  258. 14.4.1 机器学习重点术语
  259. 14.4.2 第1层:问题构建、范围界定和问题定义
  260. 14.4.3 第2层:持续交付数据
  261. 14.4.4 第3层:持续交付净化数据
  262. 14.4.5 第4层:持续交付探索性数据分析
  263. 14.4.6 第5层:持续交付传统机器学习和AutoML
  264. 14.4.7 第6层:机器学习运作反馈环
  265. 14.5 使用Docker和Kubernetes部署sklearn Flask应用
  266. 14.5.1 EDA
  267. 14.5.2 建模
  268. 14.5.3 调整GBM缩放
  269. 14.5.4 拟合模型
  270. 14.5.5 评估
  271. 14.5.6 adhoc_predict
  272. 14.5.7 JSON工作流
  273. 14.5.8 缩放输入
  274. 14.5.9 adhoc_predict
  275. 14.5.10 缩放输入
  276. 14.6 练习题
  277. 14.7 实操题
  278. 14.8 学习评价
  279. 第15章 数据工程
  280. 15.1 小数据
  281. 15.1.1 小数据与大数据
  282. 15.1.2 处理小数据文件
  283. 15.2 写文件
  284. 15.3 读文件
  285. 15.4 使用生成器流水线逐行读取和处理
  286. 15.5 使用YAML
  287. 15.6 大数据
  288. 15.7 大数据工具、组件和平台
  289. 15.7.1 数据源
  290. 15.7.2 文件系统
  291. 15.7.3 数据存储
  292. 15.7.4 实时流式采集
  293. 15.8 案例分析:自制数据流水线
  294. 15.9 Serverless数据工程
  295. 15.9.1 使用AWS Lambda处理CloudWatch事件
  296. 15.9.2 使用Amazon CloudWatch日志分析AWS Lambda
  297. 15.9.3 使用AWS Lambda填充Amazon Simple Queue Service
  298. 15.9.4 连接CloudWatch事件触发器
  299. 15.9.5 创建事件驱动型lambda
  300. 15.9.6 从AWS Lambda中读取Amazon SQS事件
  301. 15.10 小结
  302. 15.11 练习题
  303. 15.12 实操题
  304. 第16章 DevOps惨痛经验和人物访谈
  305. 16.1 产不出电影的电影厂
  306. 16.2 推不出游戏的游戏坊
  307. 16.3 耗时60秒才启动的Python脚本
  308. 16.4 用缓存和智能监测程序浇灭火情
  309. 16.5 自动化会让你失业
  310. 16.6 DevOps反模式
  311. 16.6.1 反模式:没有自动化构建服务器
  312. 16.6.2 盲目行事
  313. 16.6.3 协调难题不可避免
  314. 16.6.4 没有团队合作
  315. 16.7 人物访谈
  316. 16.7.1 Glenn Solomon
  317. 16.7.2 Andrew Nguyen
  318. 16.7.3 Gabriella Roman
  319. 16.7.4 Rigoberto Roche
  320. 16.7.5 Jonathan LaCour
  321. 16.7.6 Ville Tuulos
  322. 16.7.7 Joseph Reis
  323. 16.7.8 Teijo Holzer
  324. 16.7.9 Matt Harrison
  325. 16.7.10 Michael Foord
  326. 16.8 一些建议
  327. 16.9 练习题
  328. 16.10 挑战题
  329. 16.11 毕业项目
书名:基于Python的DevOps
译者:安道 译
国内出版社:中国电力出版社
出版时间:2022年02月
页数:512
书号:978-7-5198-6441-5
原版书书名:Python for DevOps
原版书出版商:O'Reilly Media
Noah Gift
 
Noah Gift是加州州立大学洛杉矶分校的CIS硕士、加州理工学院圣路易斯奥比斯波营养学学士、Apple和LPI认证系统管理员,曾就职于加州理工学院、迪斯尼动画公司、索尼图像和Turner工作室。
在闲暇时间里,他喜欢与妻子Leah、儿子Liam一起弹钢琴和做运动。
Noah Gift has an M.A. in CIS from California State University, Los Angeles, a B.S. in
nutritional science from California Polytechnic San Luis Obispo, is an Apple and LPI
certified sysadmin, and has worked at companies such as Caltech, Disney Feature Animation,
Sony Imageworks, and Turner Studios.
In his free time, he enjoys hanging out with his wife, Leah, and their son, Liam, playing
the piano, and exercising religiously.
 
 
Kennedy Behrman
 
Kennedy Behrman是一位资深顾问,专门为初创企业设计和实施云解决方案。
 
 
Alfredo Deza
 
Alfredo Deza是一位软件工程师和开源软件开发者,他重建了公司的基础设施。
 
 
Grig Gheorghiu
 
Grig Gheorghiu是一名程序员、研究实验室主任、系统/网络/安全架构师和软件测试工程师。
 
 
本书封面上的动物是地毯蟒(Morelia spilota),是一种无毒的蜷缩蛇,主要分布于澳大利亚及邻近的所罗门群岛和新几内亚。作为澳大利亚大陆分布最广的蟒蛇之一,从东北部的昆士兰热带雨林到西南部的地中海林地,地毯蟒随处可见。经常可见地毯蟒在花园里的床上爬行,在阁楼的椽子上盘绕,甚至作为家庭宠物饲养。
多数地毯蟒呈橄榄绿色,带有深色边缘的奶油色斑点。值得注意的是,丛林地毯蟒(Morelia spilota cheynei)的皮肤呈亮黄色和黑色,是养蛇人最喜欢的品种。成年地毯蟒平均身长6.6英尺,据报道有些长达13英尺。
地毯蟒是一种在夜间活动的猎食者,它利用嘴巴两侧的唇窝来探测鸟类、蜥蜴和小型哺乳动物的体温。白天,它们缠在树上,或者寻找一块空地晒太阳。雌性地毯蟒尤其喜欢早上晒太阳,然后回到巢穴中,把热量传递给蛇蛋。此外,它们还会收缩自己的身体,为每年夏天产下的10~47枚蛇蛋提供热量。