第1章 开始使用Puppet 1
1.1什么是Puppet 1
1.1.1部署 2
1.1.2配置语言和资源抽象层 3
1.1.3事务层 5
1.2选择正确的Puppet版本 5
1.3我能混用Puppet的版本吗 6
1.4安装Puppet 7
1.4.1在Red Hat企业版Linux和Fedora上面安装Puppet 7
1.4.2在Debian和Ubuntu上安装Puppet 8
1.4.3在OpenSolaris上安装Puppet 9
1.4.4从源码安装Puppet 9
1.4.5在微软Windows系统上安装Puppet 10
1.4.6在其他平台上安装Puppet 10
1.5配置Puppet 11
1.5.1 site.pp文件 12
1.5.2配置防火墙 13
1.5.3启动Puppet Master 13
1.6连接第一个Agent 15
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安装Puppet 27
2.1.2配置节点 27
2.2魔术般的模块 32
2.3创建一个模块管理SSH 35
2.4创建一个模块来管理Postfix 43
2.4.1 postfix::install类 44
2.4.2 postfix::config类 44
2.4.3 postfix::service类 47
2.5使用mysql模块管理MySQL 48
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模块管理Puppet 55
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 Master 82
4.2.1在企业版Linux上安装Apache和Passenger 82
4.2.2在基于Debian的系统上安装Apache和Passenger 83
4.2.3使用Ruby Gem安装Passenger 84
4.2.4配置Apache和Passenger 84
4.2.5在Apache中测试PuppetMaster 87
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 ENC 110
5.1.1使用ENC配置节点 111
5.1.2用Shell脚本编写的ENC 111
5.1.3用Ruby编写的ENC 112
5.1.4用Perl编写的ENC 114
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中配置LDAP 118
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系统上安装ActiveMQ 141
6.4.4在基于Debian的系统上安装ActiveMQ 142
6.4.5 Puppet Master Queue的设置 144
6.5过期的资源 145
6.6小结 146
6.7相关资源 146
第7章Puppet控制台:Puppet Dashboard和Foreman 147
7.1 Puppet Dashboard 147
7.1.1安装Puppet Dashboard 148
7.1.2配置Dashboard 151
7.1.3运行Puppet Dashboard 152
7.1.4集成Puppet Dashboard 155
7.1.5外部节点分类器 159
7.1.6日志记录、数据库备份和性能 161
7.2 The Foreman 162
7.2.1安装Foreman 163
7.2.2配置Foreman 164
7.2.3启动Foreman 166
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 DSL 187
8.2.1面临的问题:来自数据的资源 187
8.2.2从数据中声明资源 187
8.3 Cucumber Puppet 197
8.3.1安装Cucumber Puppet 198
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 log 214
9.3.2 tagmail 214
9.3.3 rrdgraph 215
9.3.4 http 216
9.4自定义报告 217
9.5小结 219
9.6相关资源 219
第10章 扩展Facter和Puppet 220
10.1编写并分发自定义的Fact 220
10.1.1配置Puppet来使用自定义的Fact 220
10.1.2编写自定义Fact 222
10.1.3 测试Fact 224
10.2开发自定义的类型、提供者和函数 225
10.2.1为自定义的类型、提供者和函数配置Puppet 225
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 Collective 242
11.1安装和配置RabbitMQ 243
11.1.1在Debian上安装RabbitMQ 244
11.1.2在RHEL/CentOS上安装RabbitMQ 246
11.1.3 RabbitMQ的配置 247
11.1.4在Debian和Ubuntu上安装MCollective 248
11.1.5在企业版Linux上安装MCollective 250
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