【当当】 http://product.dangdang.com/23593858.html
【京东】 http://item.jd.com/11571426.html
【亚马逊】 http://www.amazon.cn/%E5%9B%BE%E4%B9%A6/dp/B00P5VKZWW
【天猫】 http://detail.tmall.com/item.htm?spm=a1z10.3.w4011-7555161747.28.SgDdii&id=42141530490&rn=3a7da8b28eea552fb6ebb6ed43ab024d&abbucket=18
【China-pub】 http://product.china-pub.com/3804188
《python自动化运维:技术与最佳实践》附带示例及案例源码
【国内镜像】(JD云汇)https://code.jd.com/yorkoliu/pyauto
【国外镜像】(Github)https://github.com/yorkoliu/pyauto
【源码打包下载】(zip)http://share.weiyun.com/9e4bfc70a9af8840927b92910ab80d8b
一、内容简介
本书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵、深和实践角度探讨Python在运维领域应用的著作;一方面本书的作者是中国运维领域的“偶像级”人物,本书是他在天涯社区和腾讯近10年工作经验的结晶。因为作者实战经验丰富,所以能高屋建瓴、直指痛处,围绕Python自动化运维这个主题,不仅详细介绍了系统基础信息、服务监控、数据报表、系统安全等基础模块,而且深入讲解了自动化操作、系统管理、配置管理、集群管理及大数据应用等高级功能。最重要的是,完整重现了4个来自实际生产环境的不同功能运维平台的综合案例,展示了完整的平台架构及开发流程。
全书一共16章:基础篇(1-4章)详细介绍了系统基础信息、业务服务监控、定制业务质量报表、系统安全等基础和常用模块;高级篇(5-12章)深入讲解了批量运维管理器pexpect、paramiko、Fabric,集中化管理平台Ansible、Saltstack,统一网络控制器Func等高级功能,涵盖自动化操作、系统管理、配置管理、集群管理及大数据应用等主题;案例篇(13-16章)详细介绍了4个来自不同平台的运维案例,如何从零开始打造一个B/S自动化运维平台、如何打造Linux系统安全审计功能、如何构建分布式质量监控平台、如何构建桌面版C/S自动化运维平台,这4个案例均来自实际生产环境。
二、目录
前 言
第一部分 基础篇
第1章 系统基础信息模块详解 2
1.1 系统性能信息模块psutil 2
1.1.1 获取系统性能信息 3
1.1.2 系统进程管理方法 6
1.2 实用的IP地址处理模块IPy 7
1.2.1 IP地址、网段的基本处理 8
1.2.2 多网络计算方法详解 9
1.3 DNS处理模块dnspython 11
1.3.1 模块域名解析方法详解 11
1.3.2 常见解析类型示例说明 12
1.3.3 实践:DNS域名轮循业务监控 14
第2章 业务服务监控详解 17
2.1 文件内容差异对比方法 17
2.1.1 示例1:两个字符串的差异对比 17
2.1.2 生成美观的对比HTML格式文档 19
2.1.3 示例2:对比Nginx配置文件差异 19
2.2 文件与目录差异对比方法 21
2.2.1 模块常用方法说明 21
2.2.2 实践:校验源与备份目录差异 25
2.3 发送电子邮件模块smtplib 27
2.3.1 smtplib模块的常用类与方法 27
2.3.2 定制个性化的邮件格式方法 28
2.3.3 定制常用邮件格式示例详解 29
2.4 探测Web服务质量方法 34
2.4.1 模块常用方法说明 35
2.4.2 实践:实现探测Web服务质量 36
第3章 定制业务质量报表详解 39
3.1 数据报表之Excel操作模块 39
3.1.1 模块常用方法说明 41
3.1.2 实践:定制自动化业务流量报表周报 48
3.2 Python与rrdtool的结合模块 50
3.2.1 rrdtool模块常用方法说明 51
3.2.2 实践:实现网卡流量图表绘制 53
3.3 生成动态路由轨迹图 56
3.3.1 模块常用方法说明 56
3.3.2 实践:实现TCP探测目标服务路由轨迹 57
第4章 Python与系统安全 60
4.1 构建集中式的病毒扫描机制 60
4.1.1 模块常用方法说明 61
4.1.2 实践:实现集中式的病毒扫描 61
4.2 实现高效的端口扫描器 64
4.2.1 模块常用方法说明 64
4.2.2 实践:实现高效的端口扫描 66
第二部分 高级篇
第5章 系统批量运维管理器pexpect详解 70
5.1 pexpect的安装 70
5.2 pexpect的核心组件 71
5.2.1 spawn类 71
5.2.2 run函数 74
5.2.3 pxssh类 75
5.3 pexpect应用示例 76
5.3.1 实现一个自动化FTP操作 76
5.3.2 远程文件自动打包并下载 77
第6章 系统批量运维管理器paramiko详解 79
6.1 paramiko的安装 79
6.2 paramiko的核心组件 81
6.2.1 SSHClient类 81
6.2.2 SFTPClient类 82
6.3 paramiko应用示例 85
6.3.1 实现密钥方式登录远程主机 85
6.3.2 实现堡垒机模式下的远程命令执行 85
6.3.3 实现堡垒机模式下的远程文件上传 88
第7章 系统批量运维管理器Fabric详解 91
7.1 Fabric的安装 91
7.2 fab的常用参数 92
7.3 fabfile的编写 93
7.3.1 全局属性设定 93
7.3.2 常用API 94
7.3.3 示例1:查看本地与远程主机信息 95
7.3.4 示例2:动态获取远程目录列表 96
7.3.5 示例3:网关模式文件上传与执行 97
7.4 Fabric应用示例 98
7.4.1 示例1:文件打包、上传与校验 98
7.4.2 示例2:部署LNMP业务服务环境 99
7.4.3 示例3:生产环境代码包发布管理 101
第8章 从“零”开发一个轻量级WebServer 104
8.1 Yorserver介绍 104
8.1.1 功能特点 104
8.1.2 配置文件 105
8.2 功能实现方法 106
8.2.1 HTTP缓存功能 107
8.2.2 HTTP压缩功能 111
8.2.3 HTTP SSL功能 111
8.2.4 目录列表功能 114
8.2.5 动态CGI功能 114
第9章 集中化管理平台Ansible详解 118
9.1 YAML语言 119
9.1.1 块序列描述 120
9.1.2 块映射描述 120
9.2 Ansible的安装 121
9.2.1 业务环境说明 121
9.2.2 安装EPEL 122
9.2.3 安装Ansible 122
9.2.4 Ansible配置及测试 122
9.2.5 配置Linux主机SSH无密码访问 123
9.3 定义主机与组规则 124
9.3.1 定义主机与组 124
9.3.2 定义主机变量 125
9.3.3 定义组变量 125
9.3.4 分离主机与组特定数据 126
9.4 匹配目标 127
9.5 Ansible常用模块及API 127
9.6 playbook介绍 132
9.6.1 定义主机与用户 132
9.6.2 任务列表 133
9.6.3 执行playbook 134
9.7 playbook角色与包含声明 135
9.7.1 包含文件,鼓励复用 135
9.7.2 角色 136
9.8 获取远程主机系统信息:Facts 141
9.9 变量 142
9.9.1 Jinja2过滤器 143
9.9.2 本地Facts 143
9.9.3 注册变量 144
9.10 条件语句 145
9.11 循环 146
9.12 示例讲解 147
第10章 集中化管理平台Saltstack详解 155
10.1 Saltstack的安装 156
10.1.1 业务环境说明 156
10.1.2 安装EPEL 156
10.1.3 安装Saltstack 156
10.1.4 Saltstack防火墙配置 157
10.1.5 更新Saltstack配置及安装校验 157
10.2 利用Saltstack远程执行命令 158
10.3 Saltstack常用模块及API 161
10.4 grains组件 166
10.4.1 grains常用操作命令 167
10.4.2 定义grains数据 167
10.5 pillar组件 170
10.5.1 pillar的定义 171
10.5.2 pillar的使用 173
10.6 state介绍 174
10.6.1 state的定义 174
10.6.2 state的使用 175
10.7 示例:基于Saltstack实现的配置集中化管理 177
10.7.1 环境说明 177
10.7.2 主控端配置说明 177
10.7.3 配置pillar 179
10.7.4 配置state 180
10.7.5 校验结果 183
第11章 统一网络控制器Func详解 185
11.1 Func的安装 186
11.1.1 业务环境说明 186
11.1.2 安装Func 186
11.2 Func常用模块及API 189
11.2.1 选择目标主机 190
11.2.2 常用模块详解 190
11.3 自定义Func模块 194
11.4 非Python API接口支持 198
11.5 Func的Facts支持 199
第12章 Python大数据应用详解 202
12.1 环境说明 202
12.2 Hadoop部署 203
12.3 使用Python编写MapReduce 207
12.3.1 用原生Python编写MapReduce详解 208
12.3.2 用Mrjob框架编写MapReduce详解 212
12.4 实战分析 216
12.4.1 示例场景 216
12.4.2 网站访问流量统计 217
12.4.3 网站HTTP状态码统计 219
12.4.4 网站分钟级请求数统计 220
12.4.5 网站访问来源IP统计 221
12.4.6 网站文件访问统计 222
第三部分 案例篇
第13章 从零开始打造B/S自动化运维平台 226
13.1 平台功能介绍 226
13.2 系统构架设计 227
13.3 数据库结构设计 228
13.3.1 数据库分析 228
13.3.2 数据字典 228
13.3.3 数据库模型 229
13.4 系统环境部署 230
13.4.1 系统环境说明 230
13.4.2 系统平台搭建 230
13.4.3 开发环境优化 233
13.5 系统功能模块设计 235
13.5.1 前端数据加载模块 235
13.5.2 数据传输模块设计 237
13.5.3 平台功能模块扩展 240
第14章 打造Linux系统安全审计功能 245
14.1 平台功能介绍 245
14.2 系统构架设计 246
14.3 数据库结构设计 247
14.3.1 数据库分析 247
14.3.2 数据字典 247
14.4 系统环境部署 248
14.4.1 系统环境说明 248
14.4.2 上报主机配置 248
14.5 服务器端功能设计 252
14.5.1 Django配置 252
14.5.2 功能实现方法 253
第15章 构建分布式质量监控平台 256
15.1 平台功能介绍 256
15.2 系统构架设计 257
15.3 数据库结构设计 258
15.3.1 数据库分析 258
15.3.2 数据字典 258
15.3.3 数据库模型 259
15.4 系统环境部署 260
15.4.1 系统环境说明 260
15.4.2 数据采集角色 260
15.4.3 rrdtool作业 261
15.5 服务器端功能设计 263
15.5.1 Django配置 263
15.5.2 业务增加功能 264
15.5.3 业务报表功能 266
第16章 构建桌面版C/S自动化运维平台 269
16.1 平台功能介绍 269
16.2 系统构架设计 270
16.3 数据库结构设计 271
16.3.1 数据库分析 271
16.3.2 数据字典 272
16.3.3 数据库模型 272
16.4 系统环境部署 273
16.4.1 系统环境说明 273
16.4.2 系统环境搭建 273
16.5 系统功能模块设计 274
16.5.1 用户登录模块 274
16.5.2 系统配置功能 275
16.5.3 服务器分类模块 277
16.5.4 系统升级功能 280
16.5.5 客户端模块编写 284
16.5.6 执行功能模块 287
16.5.7 平台程序发布 289
三、书摘与插画




2014年11月21日至22日,51CTO传媒主办的2014WOT全球软件技术峰会·深圳站将在深圳召开,技术人员和企业实践用户将齐聚深圳。WOT是由51CTO传媒主办的国内最具有影响的技术峰会,自2012年以来,秉承专注技术、服务技术人员的理念,获得了广大IT从业者和技术爱好者的一致认可,成为了业界重要的技术分享交流平台以及人脉拓展平台。
本次2014 WOT·深圳站将邀请国内外顶级的互联网及创新企业技术负责人,首次对外公开其当下最in技术,分享涵盖六大主题,共有30+课程,移动游戏运营、运维开发、Web安全、数据挖掘、团队管理等以及未来两三年的技术趋势。点击报名>>
本次采访对象是本次2014WOT深圳站<自动化运维>论坛的演讲人刘天斯,目前为腾讯的高级运维工程师

1、您目前在贵公司负责哪些事情?能否先简单谈谈您在运维领域的从业经验,和您对此运维的理解?
从事运维方面的工作刚满10年,前6年负责天涯社区的系统架构及运维的工作,2011年入职腾讯,先后负责静态类、大游戏下载业务的CDN运营,以及负责公司所有游戏的大数据接入、分析、提取等工作。
简单分享个人在运维领域从业的两个经验:
1)关于运维自动化这件事情,几乎所有的IT企业都在做,看似是一件非常好的事情,忽略了前提条件,往往付出更大的代价及运营成本。所提到的前提条件便是运维体系“标准化”、“流程化”、“规范化”的建设,覆盖企业中资源、版本、业务发布、监控、事件管理等环节。有了这些作为基础铺垫,运维自动化的建设才会很顺利实施,达成预期。
2)业务的生命周期管理,运维扮演的角色。当一个产品在规划之初运维人员须第一时间介入参与,根据产品特点,提供业务平台前期架构设计、资源评估等数据。当产品进入开发阶段,须与开发人员保持密切沟通与互动,提供业务接入、缓存、存储、监控、安全等方面规范,以便在编码阶段更好磨合与对接,避免上线后反复做不必要的版本迭代,也使得开发出来的产品具备更高的可运维性。待业务上线后,务必定期同步相关运营数据给产品与开发人员侧,为后续优化、改进的工作提供数据支持,这也恰恰能体现运维人员的专业性及团队合作意识。
运维体系中各个环节的工作犹如散落在地上的珠子,每个珠子分别代表事件、资源、监控、安全、自动化、日常工作等,看似是七零八落的,我们需要利用“流程”这条线将所有的珠子串起来,珠子的前后顺序及间隔由“标准规范”来控制。这样就形成了一条完整的链子,是一个有机的整体,最后会促使运维工作开展得井井有条。这条链子扣在三个点子上,就是“质量”、“效率”、“成本”。
2、能否讲讲这么多年运维工作的变化与演进?
云计算给IT行业带来的巨大冲击,从最初的不信任逐渐到认可,到最后各类云计算应用的落地普及。当然,这也给运维人员带来非常大的挑战,尤其承担企业私有云的建设,运维人员除了具备传统运维的能力外,还需要深入理解业务资源使用的特点,例如区分是计算性、内存型、IO型还是存储型,同时需要对资源进行合理的规划及定义扩容规则。私有云作为资源的一个大池子,如何保持其弹性,需要具备一套精准的监控手段,配合自动化运维工具来保障,包括自动化安装部署、配置管理、存储管理、故障处理、备份容灾等。实现业务快速上线,资源快速扩容,同时具备高可用的能力。在这种大背景下,运维人员除了会用“云”,且要求用好“云”,才能给企业带来价值。另外基于容器实现的虚拟化(Docker)已经兴起,将给业务的打包、部署、迁移、测试等都会带来革命性的变革,运维准备好了吗?
3、随着如今大数据的爆发,这给运维工作带来了怎样的冲击与改变?
大数据在企业做精细运营方面发挥了巨大的作用,作为底层服务支撑的运维,需要掌握大数据生态圈中关键技术点,包括Hadoop、hive、hbase、spark、storm等平台的日常运营,需要解决包括资源调度、数据接入、快速扩容、节点故障处理、高可用、数据存储生命周期管理等问题,这给运维人员提出了更高的要求,同时也给运维工作带来了新的机遇,一典型案例是将所有告警接入storm实时计算分析,过滤出有效告警,同时将信息入库Hadoop,以便做历史档的离线分析,让运维人员更懂业务。
4、贵公司在监控上用了哪些技术?使用开源的还是自主研发?
公司内部使用了自研方式实现监控体系的构建,局部会使用开源工具作为补充。
5、您认为目前国内的自动化平台以及数据可视化平台建设如何?还需要加强哪方面发展?
自动化运维是每个企业都在追求的终极目标,做到一键触发业务上线、故障自愈、资源自动调度、高质量数据报表及业务智能分析等,既然是目标,说明大部分都还在路上,即使国内一线的互联网企业也未能达到该理想的状态。自动化之路是一个复杂的系统工程,是一个长期积累、沉淀且不断优化的过程。由于互联网行业的特殊性,包括新技术不断涌入及快速迭代,另一方面是互联网业务日新月异,各种颠覆性的产品层出不穷。作为服务支撑,这也给自动化运维带来变数及挑战。
在国内需要加强的部分还是资源与技术的共享,很多时候大家都在同一件事情,贡献一个成熟且通用的组件对业界的影响是深远的,阿里在这方面做得就非常好。在个人著作《Python自动化运维:技术与最佳实践》中也分享一些实现方法与实践案例,可作参考。
6、您认为一名合格的运维工程师是如何定义的?需要具备哪些因素?
我认为一名合格的运维工程师需要具备高度的责任心,有一定的沟通及协调能力,同时需要具备发现问题及解决问题的能力,平时要多思考,多总结,多输出,以便将现有的沉淀更好传承下去,即使人员变动也不会出现断层。另外对资源、质量要非常敏感,有一定的规划及ITIL能力。对运营的业务要做到全面性的了解,包括提供的服务、总体架构、技术实现原理以及存在的问题等。在技能方面需要熟悉主流的运维相关技术,包括网络、设备、操作系统、负载均衡、缓存、数据库、云计算技术等方面,并关注最新技术发展动向,评估并思考如何运用到实际工作当中,解决工作中碰到的问题。同时,需要具有很好的开发能力,理由是没有人比我们更清楚我们需要什么的平台或工具,在与产品或开发沟通时,才有更多的发言权,甚至是主导权。
原文:【2014WOT深圳站讲师专访】刘天斯:Docker的到来,运维准备好了么?