目 录
第1章 开始使用Puppet1
1.1 什么是Puppet1
1.1.1 部署2
1.1.2 配置语言和资源抽象层3
1.1.3 事务层5
1.2 选择正确的Puppet版本5
1.3 我能混用Puppet的版本吗6
1.4 安装Puppet7
1.4.1 在Red Hat企业版Linux和Fedora上面安装Puppet7
1.4.2 在Debian和Ubuntu上安装Puppet8
1.4.3 在OpenSolaris上安装Puppet9
1.4.4 从源码安装Puppet9
1.4.5 在微软Windows系统上安装Puppet10
1.4.6 在其他平台上安装Puppet10
1.5 配置Puppet11
1.5.1 site.pp文件12
1.5.2 配置防火墙13
1.5.3 启动Puppet Master13
1.6 连接第一个Agent15
1.7 创建第一个配置17
1.7.1 扩展site.pp文件17
1.7.2 Agent的配置18
1.8 创建第一个模块19
1.8.1 模块结构20
1.8.2 init.pp文件20
1.9 应用第一个配置23
1.10 小结24
1.11 相关资源25
第2章 使用Puppet构建主机26
2.1 入门27
2.1.1 安装Puppet27
2.1.2 配置节点27
2.2 魔术般的模块32
2.3 创建一个模块管理SSH35
2.4 创建一个模块来管理Postfix43
2.4.1 postfix::install类44
2.4.2 postfix::config类44
2.4.3 postfix::service类47
2.5 使用mysql模块管理MySQL48
2.5.1 mysql::install类49
2.5.2 mysql::config类49
2.5.3 mysql::service类50
2.6 管理Apache和网站51
2.6.1 apache::install类51
2.6.2 apache::service类52
2.6.3 Apache定义52
2.7 使用Puppet模块管理Puppet55
2.8 小结58
2.9 相关资源58
第3章 使用Puppet环境59
3.1 配置Puppet环境60
3.1.1 填充新的环境61
3.1.2 在开发环境中作出变更62
3.2 使用Puppet Agent测试新的环境64
3.3 环境分支和合并65
3.3.1 设置一个中心仓库66
3.3.2 使用分支做出一个变更67
3.3.3 将变更合并到测试环境75
3.4 生产环境版本78
3.5 小结79
3.6 相关资源80
第4章 Puppet的可扩展性81
4.1 明确面临的挑战81
4.2 使用Apache和Passenger运行
Puppet Master82
4.2.1 在企业版Linux上安装Apache和Passenger82
4.2.2 在基于Debian的系统上安装Apache和Passenger83
4.2.3 使用Ruby Gem安装
Passenger84
4.2.4 配置Apache和Passenger84
4.2.5 在Apache中测试Puppet
Master87
4.3 对多个Puppet Master使用负载均衡88
4.3.1 HTTP的负载均衡89
4.3.2 Puppet CA的负载均衡配置98
4.4 测量性能106
4.5 小结108
4.6 相关资源108
第5章 外部Puppet配置109
5.1 ENC110
5.1.1 使用ENC配置节点111
5.1.2 用Shell脚本编写的ENC111
5.1.3 用Ruby编写的ENC112
5.1.4 用Perl编写的ENC114
5.1.5 后端化的节点分类器115
5.2 在LDAP中存储节点配置116
5.2.1 安装Ruby LDAP库116
5.2.2 设置LDAP服务器117
5.2.3 添加Puppet方案117
5.2.4 在Puppet中配置LDAP118
5.3 小结120
5.4 相关资源121
第6章 配置的导出与存储122
6.1 虚拟资源122
6.1.1 声明和实例化一个虚拟资源123
6.1.2 使用Realize函数124
6.1.3 实例化多个虚拟资源124
6.1.4 关系链语法125
6.2 导出资源与配置存储126
6.2.1 用于配置存储的数据库
服务器126
6.2.2 配置Puppet Master来进行
配置存储128
6.2.3 添加一个MySQL表索引130
6.3 使用导出资源131
6.3.1 自动化的SSH主机公钥管理131
6.3.2 导出负载均衡器后端资源134
6.3.3 自动化的Nagios服务检测136
6.4 扩展配置存储139
6.4.1 简化的配置存储139
6.4.2 配置存储的队列支持140
6.4.3 在企业版Linux系统上安装ActiveMQ141
6.4.4 在基于Debian的系统上安装ActiveMQ142
6.4.5 Puppet Master Queue的设置144
6.5 过期的资源145
6.6 小结146
6.7 相关资源146
第7章 Puppet控制台:Puppet
Dashboard和Foreman147
7.1 Puppet Dashboard147
7.1.1 安装Puppet Dashboard148
7.1.2 配置Dashboard151
7.1.3 运行Puppet Dashboard152
7.1.4 集成Puppet Dashboard155
7.1.5 外部节点分类器159
7.1.6 日志记录、数据库备份和
性能161
7.2 The Foreman162
7.2.1 安装Foreman163
7.2.2 配置Foreman164
7.2.3 启动Foreman166
7.2.4 整合Foreman的能力166
7.2.5 在Foreman中显示报告168
7.2.6 在Foreman中显示节点信息169
7.2.7 使用Foreman来触发Puppet
运行170
7.3 小结171
7.4 相关资源171
第8章 工具和集成172
8.1 Puppet Forge和模块工具172
8.1.1 安装Puppet模块工具173
8.1.2 在Forge中搜索并安装一个
模块174
8.1.3 使用一个模块175
8.1.4 使用Puppet-Module工具创
建一个模块177
8.2 Puppet Ruby DSL187
8.2.1 面临的问题:来自数据的
资源187
8.2.2 从数据中声明资源187
8.3 Cucumber Puppet197
8.3.1 安装Cucumber Puppet198
8.3.2 编写一个故事199
8.3.3 测试基本的目录策略202
8.3.4 验证指定的资源204
8.4 小结209
8.5 相关资源210
第9章 Puppet的报告系统211
9.1 入门211
9.2 配置报告系统213
9.3 报告处理器214
9.3.1 log214
9.3.2 tagmail214
9.3.3 rrdgraph215
9.3.4 http216
9.4 自定义报告217
9.5 小结219
9.6 相关资源219
第10章 扩展Facter和Puppet220
10.1 编写并分发自定义的Fact220
10.1.1 配置Puppet来使用自定义的Fact220
10.1.2 编写自定义Fact222
10.1.3 测试Fact224
10.2 开发自定义的类型、提供者和函数225
10.2.1 为自定义的类型、提供者和函数配置Puppet225
10.2.2 编写一个Puppet类型和
提供者226
10.2.3 编写一个Parsed File类型
和对应的提供者231
10.2.4 一个更加复杂的类型和
提供者234
10.2.5 测试类型和提供者237
10.2.6 编写自定义函数238
10.3 小结240
10.4 相关资源240
第11章 Marionette Collective242
11.1 安装和配置RabbitMQ243
11.1.1 在Debian上安装
RabbitMQ244
11.1.2 在RHEL / CentOS上安装RabbitMQ246
11.1.3 RabbitMQ的配置247
11.1.4 在Debian和Ubuntu上安装MCollective248
11.1.5 在企业版Linux上安装MCollective250
11.1.6 MCollective服务端的配置251
11.2 MCollective的插件253
11.2.1 Puppet Agent的MCollective
插件253
11.2.2 MCollective的Facter插件258
11.2.3 更多插件259
11.3 使用元数据定位主机260
11.4 小结261
11.5 相关资源262
附录A 和Puppet一起工作263
A.1 获得支持和培训263
A.2 相关资源263
A.2.1 网站264
A.2.2 邮件列表265
A.2.3 Puppet Module Forge265
A.2.4 Puppet企业版265
A.2.5 技术支持(商业)265
A.2.6 培训265
A.2.7 IRC265