Puppet实战

Puppet实战

作者: 刘 宇

出版社:机械工业出版社
出版年:2013-12
页数:376
定价:69.00元
ISBN:9787111445180
样章下载: http://wenku.it168.com/d_001331584.shtml
           http://wenku.it168.com/d_001331585.shtml
内容简介:
   

    Puppet领域的经典之作,资深运维专家多年一线经验结晶,51CTO技术社区强烈推荐,新浪研发中心平台架构部高级总监童剑、资深运维专家田逸、中国最大开源社区ChinaUnix创始人之一南非蜘蛛、OpenStack基金会董事程辉等业界资深专家联袂推荐。本书详细讲解了Puppet的功能和使用方法,深入剖析了Puppet的工作原理,系统总结了Puppet的使用技巧,包含大量来自一线的实战案例和最佳实践。
    全书一共20章,共分为四部分:准备篇(第1~4章)介绍了Puppet用途、组织结构、工作原理、核心配置文件、各种平台下的安装与配置,以及它的运行环境,是使用Puppet前必须做好的准备工作;基础篇(第5~10章)详细讲解了Puppet的理论知识和功能使用,Puppet的语法与命令、资源、模块、类、模板、节点管理,以及Facter、数组、函数、变量和标签;实战篇(第11~13章)通过几个经典案例,包括大规模Nginx集群的部署方案、分布式监控系统部署方案、OpenStack快速部署方案等,使读者能快速将Puppet运用到实践中;进阶篇(第14~20章)综合讲解了Puppet的扩展模式、版本控制、报告系统、控制台、扩展工具及MCollective,让读者了解一个完整的Puppet生产流程。

作者简介:
      刘宇   资深运维工程师和系统工程师,曾任职于新浪,担任高级技术工程师,现就职于百度,负责系统运维相关的工作,是国内Puppet领域的先驱之一。精通分布式自动化管理平台和分布式监控平台的管理,对视频点播、直播架构、文件加速、调度系统和数据分析都有非常深入的研究,实践经验极为丰富。在国内率先使用Puppet进行大规模集群管理,并撰写了Puppet配置手册在网络上分享。活跃于InfoQ和51CTO等技术社区,曾被评为InfoQ金牌讲师和51CTO博客之星。


前  言
为什么要写这本书
    子曰:“工欲善其事,必先利其器。”作为系统管理员,最应该具备的一种技能就是利用各种优秀开源软件快速完成自己的工作,让自己变得更轻松。但并不是所有的软件都适合你,你需要根据自己的环境及需求进行选择。
    Puppet就是系统管理员的一把利器。几年前我开始学习Puppet的时候,不少朋友都问我:为什么选择Puppet?它有什么优势?当时pssh、CFEngine等都已经很成熟,并且也能帮助系统管理员有效地解决繁重的工作。为什么还要选择Puppet?“需求决定产品”。Luke Kanies(Puppet作者,以下简称Luke)曾经全面参与了重写CFEngine的解析器和开发ISConf3的工作,但是他还是觉得现有的工具已经无法满足他的工作需求,需要自己创造一个全新的工具,才能彻底使他的工作更加高效、便捷。 这便是Puppet诞生的背景和原因。
    Puppet注重设计简洁、先框架后应用两个中心思想。这也造就了Puppet今日的成功,它的“三板斧”——资源、类、模板,可以轻松地帮我们完成复杂的业务逻辑关系管理。同时,Puppet并不具备执行功能,因此在某些程度上存在短板,(比如exec是为解决特定系统管理员蹩脚的执行命令需求而开发的,但Luke一再强调不建议使用。)
    或许更多的系统管理员抱怨Puppet没有命令执行功能。Luke早就考虑到了这一点,并提前收购了MCollective,采用消息型总线的中间件来实现命令执行、系统管理、Puppet客户端管理等,以弥补了Puppet在这方面的不足,可见Puppetlabs非常有远见。伴随着Puppet各子功能及扩展工具的遍地开花,Puppet的商业化及各种开源社区的支持,Puppet可谓是蒸蒸日上。
    在新兴的同类工具中,我的另一个关注点是SaltStack,它天生具备命令执行和配置管理两大核心功能,相比Puppet来说有一定优势,但SaltStack的成长还需要我们耐心等待。Puppet打败1993年“出生”的老牌系统配置管理工具CFEngine就花费了近7年时间。而Puppet与Salt Stack真正鹿死谁手,我们拭目以待。相信以后的市场竞争会越来越激烈。
    为了让更多的系统管理员了解并深入学习Puppet,可以利用Puppet的集成方案解决系统管理复杂而繁重的任务,而不是盲目地寻找问题,我觉得有必要结合自己在学习Puppet过程中走过的弯路将工作中的经验和总结以实战形式呈现给大家。我也希望更多的人能加入开源社区,拥抱开源,拥抱变化,通过学习Puppet,体会到与开源爱好者交流的乐趣,而不是为了工具选型而犹豫甚至争斗。这也是我写作本书的初衷。
    本书技术深入而阅读简单,涉及系统管理员所需的很多方面的基础知识,同时通过穿插各种实例及代码详解以便使读者能够快速掌握Puppet,并迅速将其运用到工作环境当中。通过这样一本以系统管理员为核心的书,希望能给读者带来的不只是技术能力提升,更多的是开源与奉献精神。也希望更多的系统管理员通过多阅读、多交流,建立起享受分享的技术氛围。
读者对象
    根据本书内容定位,适合阅读本书的读者有:
    Puppet用户和爱好者
    UNIX与Linux系统管理员
    运维工程师
如何阅读本书
    本书分为四大部分:
    第一部分为准备篇(第1~4章),简单地介绍了Puppet的发展历程和相关理论,帮助读者了解一些基础背景知识,并快速搭建测试环境。
    第二部分为基础篇(第5~10章),着重讲解Puppet的基础理论知识,包括语法、资源、类、模板、模块、节点、Facter、数组、函数、变量。结合不同实例让读者感觉理论知识不再那么枯燥。
    第三部分为实战篇(第11~13章),从实战角度进行讲解,结合流行监控系统Nagios和Zabbix,包括最为热门的云计算OpenStack的部署,使读者能快速掌握Puppet并运用到实践中。
    第四部分为进阶篇(第14~20章),通过对Puppet扩展模式、版本控制、报告系统、控制台、扩展工具及MCollective的综合讲解,让读者了解一个完整的Puppet生产流程。
    其中第三部分以实战来讲解Puppet应用,相比于前两部分更加复杂。如果你是一名经验丰富的资深用户,能够理解Puppet的相关基础知识和工作原理,那么你可以直接阅读这部分内容。但是如果你是一名初学者,请一定从第1章的基础理论知识开始学习。
勘误和支持
    由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意在博客(http://liuyu.github.io)的基础上开辟了在线支持与应急方案的站点http://puppet.bubbyroom.com。你可以将书中的错误以及遇到的有关Puppet的任何问题,通过访问该站点的Q&A页面提交给我。书中的全部源文件除可以从华章网站①下载外,还可以从这个站点下载。同时我也会将相应的功能更新在这个站点上及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱liuyu105#gmail.com(sed 's/#/@/g'),标题请注明《Puppet实战》,期待能够得到你们的真挚反馈。同样你也可以关注我为本书建立的微信公共平台(puppetchina),我会在此公共平台定期发布Puppet相关信息。
致谢
    首先要感谢伟大的Puppet作者Luke Kanies,他开发了一款影响我整个人生的软件。
    特别感谢刘长元、王广胜、吴问志、刘继伟、王哲,感谢你们对本书提出的宝贵修改意见。
    感谢为本书撰写的童剑先生、窦哲先生、田逸先生、程辉先生,感谢你们在繁忙的工作中抽出时间,阅读了本书的样稿并写下推荐和评论。
    感谢机械工业出版社华章公司的编辑杨福川,是你的引导才促使我完成这本书。特别感谢姜影编辑,在这一年多的时间中始终帮我校对并支持我的写作,你的鼓励和帮助引导我顺利完成全部书稿。
    最后感谢我的笨笨,一如既往地支持我写作,给予我无尽的支持与灵感,并时时刻刻为我灌输着信心和力量!
    谨以此书献给我即将出生的Baby,以及众多热爱Puppet的朋友们!


刘宇(守住每一天)
于中国北京






目  录
前  言
第一部分 准备篇
第1章 认识Puppet  2
1.1 Puppet的起源与发展现状  2
1.1.1 什么是Puppet  2
1.1.2 Puppet起源与发展  2
1.1.3 版本语言特征  3
1.1.4 命令差异  4
1.1.5 Puppet 3.0新特性  4
1.2 为什么要使用Puppet  5
1.2.1 都有谁在使用Puppet  5
1.2.2 常见集中化管理工具对比  5
1.2.3 推荐Puppet的理由  6
1.3 Puppet的作用和特色  6
1.3.1 为什么要有自己的语言  6
1.3.2 为什么是Ruby  6
1.3.3 管理任何机器  6
1.4 Puppet组织结构  7
1.5 Puppet工作原理  7
1.5.1 Puppet基本结构  7
1.5.2 Puppet是如何工作的  8
1.5.3 Puppet数据流  8
1.5.4 文件结合  9
1.5.5 详细交互过程  9
1.5.6 安全与认证  10
1.6 Puppet核心配置文件详解  11
1.6.1 主配置文件puppet.conf  11
1.6.2 主机配置文件site.pp  13
1.6.3 认证与安全配置文件  14
1.6.4 客户端自动认证配置  16
1.6.5 报告系统配置  16
1.6.6 文件系统配置文件  16
1.7 本章小结  17
第2章 Puppet安装与配置  18
2.1 Puppet对各系统平台的支持  18
2.2 Puppet对Ruby的支持  19
2.3 Puppet的安装步骤  19
2.4 在Linux下安装  20
2.4.1 包管理器方式安装  21
2.4.2 从源代码进行安装  23
2.4.3 从Git版本库进行安装  24
2.4.4 通过Gems进行安装  25
2.5 在Mac OS X下安装  25
2.5.1 通过二进制发布包进行安装  25
2.5.2 从Git版本库进行安装  26
2.5.3 从Ports仓库进行安装  27
2.6 配置Puppet  28
2.7 在Windows下安装与使用  30
2.7.1 包管理器方式安装  31
2.7.2 在Windows下使用Puppet  33
2.7.3 Puppet在Windows下的功能  35
2.8 如何升级  35
2.9 本章小结  36
第3章 创建你的第一个Puppet配置  37
3.1 配置一个测试节点  37
3.2 检测你的配置文件  38
3.3 客户端运行配置  39
3.4 查看运行结果  40
3.5 增加httpd模块  40
3.6 本章小结  42
第4章 Puppet运行环境  43
4.1 服务器端配置  43
4.2 客户端配置  44
4.3 如何运用环境配置  45
4.4 本章小结  48
第二部分 基础篇
第5章 Puppet语法与命令详解  50
5.1 Puppet的命名规范  51
5.1.1 资源  51
5.1.2 属性  51
5.1.3 类  52
5.1.4 模块  52
5.1.5 节点  52
5.2 主机、模块和类的命名  53
5.2.1 主机的命名  53
5.2.2 模块的命名  54
5.2.3 类的命名  54
5.3 资源、变量、参数和标签的命名  54
5.3.1 资源的命名  54
5.3.2 变量的命名  55
5.3.3 参数的命名  55
5.3.4 标签的命名  55
5.4 Puppet语法风格  55
5.4.1 间距、缩进和空白字符  56
5.4.2 注释  56
5.4.3 变量的引用  56
5.4.4 资源  57
5.4.5 条件语句  60
5.4.6 类  61
5.5 检查命令的用法  64
5.5.1 语法检查  64
5.5.2 代码调试  65
5.6 Puppet命令详解  66
5.6.1 Puppet常用命令  68
5.6.2 帮助命令详解  73
5.6.3 模块和不常用命令  75
5.7 本章小结  76
第6章 Puppet资源详解  77
6.1 什么是资源  78
6.1.1 图解核心资源  81
6.1.2 什么是manifests  81
6.1.3 资源的依赖  82
6.2 虚拟资源?  85
6.2.1 虚拟资源的定义  85
6.2.2 虚拟资源的用法  86
6.3 常用资源的用法  87
6.3.1 用户资源  88
6.3.2 用户组资源  90
6.3.3 软件安装  91
6.3.4 文件管理  94
6.3.5 服务管理  97
6.3.6 定时脚本  99
6.3.7 执行命令  101
6.3.8 调试与输出  103
6.4 Puppet作用域与变量  104
6.4.1 作用域  104
6.4.2 变量  108
6.5 条件语句  110
6.5.1 if语句  110
6.5.2 case语句  112
6.5.3 selector选择器  112
6.6 表达式  113
6.6.1 什么是表达式  113
6.6.2 运用位置  114
6.6.3 操作顺序  114
6.6.4 比较运算符  114
6.6.5 布尔运算符  115
6.6.6 算术运算符  116
6.7 函数  116
6.8 数据类型  118
6.8.1 布尔类型  118
6.8.2 未定义  119
6.8.3 字符串  119
6.8.4 资源引用  120
6.8.5 数字  120
6.8.6 哈希类型  121
6.8.7 正则表达式  121
6.8.8 数组  122
6.9 标签  123
6.10 stage运行阶段  123
6.11 本章小结  124
第7章 Puppet模块、类、模板  125
7.1 图解模块结构  125
7.2 模块管理  126
7.2.1 实例:创建一个模块  127
7.2.2 模块布局  129
7.3 类管理  130
7.3.1 类的定义  131
7.3.2 类的继承  131
7.3.3 参数化类  132
7.4 模板管理  135
7.4.1 定义与声明  135
7.4.2 ERB模板语法  136
7.5 融合  139
7.6 从Puppet Forge获取模块  141
7.7 从Example42获取模块  142
7.8 本章小结  143
第8章 节点管理  144
8.1 什么是节点  144
8.2 主机名命名规范  145
8.3 节点继承  146
8.3.1 节点继承关系  146
8.3.2 继承变量覆盖  147
8.3.3 默认类与默认节点  147
8.3.4 节点继承的判断  148
8.4 节点管理方法  149
8.4.1 每个主机名独立  149
8.4.2 采用正则匹配  150
8.4.3 使用外部节点分类器  150
8.4.4 利用WEB-UI管理  153
8.5 如何选择合适的管理方式  154
8.6 本章小结  154
第9章 认识Facter  155
9.1 什么是Facter  155
9.2 Facter的作用与特点  156
9.3 Facter的常用变量  157
9.3.1 操作系统名  158
9.3.2 操作系统相关  159
9.3.3 主机名  159
9.3.4 IP地址  160
9.3.5 内存管理  160
9.3.6 系统状态信息  161
9.3.7 版本管理  161
9.4 如何自定义fact  162
9.5 案例一:条件语句  164
9.6 案例二:匹配不同硬件配置  165
9.7 本章小结  167
第10章 小标签大用途  168
10.1 Puppet标签的定义  168
10.2 Puppet标签的说明  168
10.2.1 自动分配标签  169
10.2.2 tag元参数  169
10.2.3 tag函数  170
10.2.4 tagged函数  171
10.2.5 识别标签  171
10.3 指定标签运行特定配置  172
10.3.1 在命令行中指定特定标签  172
10.3.2 在配置文件中指定  174
10.3.3 在Node节点配置中指定  174
10.4 标签的更多用法  175
10.4.1 在收集资源中使用  175
10.4.2 实例化资源  175
10.4.3 创建资源集合  176
10.5 本章小结  176
第三部分 实战篇
第11章 大规模Nginx集群部署方案  178
11.1 应用场景  178
11.2 场景需求分析  178
11.2.1 日常变更分析  178
11.2.2 网络及架构分析  179
11.2.3 软件安装分析  180
11.2.4 软件配置分析  180
11.2.5 节点管理分析  181
11.3 合理规划  181
11.3.1 系统安装  181
11.3.2 系统初始化  182
11.3.3 部署规划  182
11.3.4 关注点  183
11.4 实施步骤  183
11.4.1 前期准备:创建软件仓库  183
11.4.2 Puppet配置文件管理  185
11.4.3 初始化操作系统  187
11.4.4 编写nginx模块  187
11.4.5 采用Forge的nginx模块  192
11.5 本章小结  194
第12章 分布式监控系统部署方案  195
12.1 利用Puppet部署Zabbix  196
12.1.1 Zabbix简介  196
12.1.2 Zabbix架构  197
12.1.3 利用Puppet部署Zabbix  198
12.1.4 Zabbix自定义监控  201
12.2 利用Puppet部署Nagios  202
12.2.1 Nagios简介  202
12.2.2 Nagios架构  203
12.2.3 Nagios服务端安装  204
12.2.4 Nagios模块应用  206
12.2.5 创建Nagios客户端监控  208
12.3 本章小结  210
第13章 OpenStack快速部署方案  211
13.1 OpenStack简介  211
13.1.1 什么是OpenStack  211
13.1.2 OpenStack的组件、服务及逻辑架构  212
13.1.3 OpenStack版本说明  213
13.2 部署OpenStack  214
13.2.1 环境准备  214
13.2.2 安装软件及Puppet模块  216
13.2.3 部署controller  218
13.2.4 部署compute  220
13.2.5 验证OpenStack部署  221
13.3 本章小结  222
第四部分 进阶篇
第14章 Puppet版本控制  224
14.1 Puppet版本控制方法  224
14.1.1 为什么要使用版本控制  224
14.1.2 版本控制的架构与原理  225
14.1.3 Git与SVN的区别  226
14.1.4 为什么采用Git  226
14.2 使用Git实现Puppet  226
14.2.1 安装与配置Git  227
14.2.2 将Puppet加入Git  228
14.2.3 使用Rake自动更新副本  229
14.2.4 使用hook实现自动语法检查  231
14.3 本章小结  232
第15章 Puppet架构扩展与分布式  233
15.1 Puppet瓶颈分析  233
15.1.1 单台Puppet Master瓶颈  233
15.1.2 认证的瓶颈  234
15.1.3 文件的瓶颈  234
15.1.4 网路的瓶颈  234
15.2 架构扩展之单台Puppet Master  234
15.2.1 Nginx+Mongrel模式  235
15.2.2 Apache+Passenger模式  238
15.2.3 Nginx+Passenger模式  242
15.3 架构扩展之多台Puppet Master  244
15.3.1 配置前的准备  248
15.3.2 Puppet CA认证服务器部署  250
15.3.3 Puppet LB负载均衡器部署  251
15.3.4 Puppet Master服务器部署  252
15.3.5 Puppet客户端配置  254
15.3.6 验证架构  254
15.4 架构扩展之利用Git构建分布式的Puppet  254
15.4.1 实现原理  255
15.4.2 安装与部署  256
15.5 本章小结  259
第16章 File资源管理优化  260
16.1 深入理解File资源?  260
16.2 操作实践  262
16.3 File资源配置方法?  269
16.3.1 模块文件目录配置  269
16.3.2 统一文件目录配置  270
16.3.3 content属性  271
16.4 File资源的优化  271
16.4.1 配置Nginx代理  272
16.4.2 选择File资源还是ERB  272
16.4.3 大文件下发方法  272
16.5 从filebucket检索文件  272
16.6 备份与恢复文件  275
16.7 File资源的缺点  276
16.8 本章小结  276
第17章 强大的报告系统  277
17.1 report介绍  277
17.2 Puppet信息记录方式  278
17.3 tagmail发送邮件报告  279
17.4 rrdgraph图形化报告  280
17.5 自定义报告处理器  282
17.6 本章小结  284
第18章 必须了解的控制台  285
18.1 Puppet DashBoard  285
18.1.1 简介  285
18.1.2 DashBoard安装  285
18.1.3 配置DashBoard  287
18.1.4 集成DashBoard  292
18.2 Foreman  297
18.2.1 Foreman简介  297
18.2.2 安装Foreman  298
18.2.3 配置Foreman  303
18.2.4 使用Foreman管理Puppet  311
18.2.5 从Foreman显示报告  313
18.2.6 Foreman其他功能  314
18.3 本章小结  314
第19章 Puppet扩展工具  315
19.1 生成HTML文档  315
19.1.1 利用puppet doc生成HTML  316
19.1.2 puppet doc的其他使用方法  318
19.2 生成依赖关系图  319
19.2.1 什么是关系图  319
19.2.2 配置方法  319
19.2.3 关系图说明?  322
19.3 PuppetDB  322
19.3.1 PuppetDB功能与特性  322
19.3.2 安装PuppetDB  324
19.3.3 PuppetDB配置文件详解  326
19.3.4 配置与使用PuppetDB  329
19.3.5 PuppetDB瓶颈  332
19.4 Hiera  335
19.4.1 Hiera的特点  335
19.4.2 Hiera的使用  335
19.5 本章小结  335
第20章 MCollective结合  336
20.1 MCollective简介  336
20.1.1 什么是MCollective  336
20.1.2 MCollective角色互换  337
20.1.3 MCollective的特点  338
20.1.4 MCollective给Puppet带来的改变  338
20.2 消息中间件  339
20.2.1 Stomp  339
20.2.2 ActiveMQ  339
20.2.3 RabbitMQ  339
20.3 标准化部署MCollective  340
20.3.1 体系结构与配置  340
20.3.2 安全模型  340
20.3.3 未来扩展  341
20.4 部署MCollective步骤  341
20.4.1 创建和收集证书  342
20.4.2 部署和配置中间件  344
20.4.3 MCollective安装与配置  348
20.5 如何使用MCollective  355
20.5.1 mco基本命令的用法  355
20.5.2 执行RPC请求  356
20.5.3 过滤器的使用  358
20.6 MCollective使用 Shell Commands  359
20.7 MCollective控制Puppet  360
20.8 本章小结  362


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16502878/viewspace-1063462/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16502878/viewspace-1063462/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值