第一部分DevOps概述 2
第1章 DevOps简介 2
1.1 DevOps原则概述 2
1.2 采用系统思维 3
1.2.1 改变团队的互动方式 4
1.2.2 改变基础设施部署方法 5
1.2.3 改变软件开发和部署方法 6
1.2.4 经常收集和响应有用的系统反馈并相应调整 6
1.3 增进DevOps知识和技能 6
1.4 小结 7
参考文献 7
第2章 DevOps工具 8
2.1 为成功而组织:看板 8
2.2 服务器部署 11
2.3 配置管理 11
2.4 持续集成 12
2.5 日志分析 12
2.6 小结 12
参考文献 12
第3章 建立DevOps配置管理测试环境 13
3.1 用AutoLab进行环境配给 13
3.2 用Vagrant进行环境配给 14
3.3 用Packer创建映像 18
3.4 管理源代码 18
3.5 小结 24
参考文献 24
第二部分Puppet 26
第4章 Puppet简介 26
4.1 Puppet架构 26
4.1.1 独立部署 27
4.1.2 主机-代理部署 27
4.2 准备Puppet测试实验室 28
4.3 Puppet资源 29
4.4 Puppet清单 30
4.5 Puppet模块 35
4.5.1 Puppet Forge 37
4.5.2 创建第一个Puppet模块 37
4.5.3 Puppet模块初始化清单(init…pp) 38
4.5.4 模板 39
4.5.5 使用Puppet模块 42
4.5.6 最后一步:版本控制提交 42
4.6 小结 42
参考文献 42
第5章 Puppet系统管理任务 43
5.1 用数据分离优化Web层 43
5.1.1 参数类(params.pp) 45
5.1.2 Hiera 48
5.1.3 节点分类 51
5.2 应用层 51
5.3 数据库层 53
5.4 实施生产建议措施 53
5.5 部署应用程序环境 54
5.6 小结 54
参考文献 54
第6章 用Puppet进行VMware vSphere管理 55
6.1 Puppet的VMware vSphere云配给器 55
6.1.1 准备VM模板 55
6.1.2 准备Puppet主服务器 56
6.2 VMware的管理模块 58
6.3 小结 63
参考文献 63
第三部分Chef 66
第7章 Chef简介 66
7.1 什么是Chef 66
7.2 Chef的核心思想 67
7.2.1 食谱的顺序 67
7.2.2 幂等性 67
7.2.3 基于API的服务器 67
7.2.4 客户端进行所有搜集工作 68
7.2.5 测试驱动基础设施 68
7.3 Chef术语 68
7.3.1 食谱 68
7.3.2 烹调书 68
7.3.3 属性 68
7.3.4 角色 68
7.3.5 运行列表 69
7.3.6 资源 69
7.3.7 环境 69
7.4 托管Chef和Chef Server之间的差别 69
7.4.1 托管Chef 69
7.4.2 Chef Server 69
7.5 ChefDK简介 70
7.5.1 ChefDK是什么 70
7.5.2 安装ChefDK 70
7.6 使用Knife 72
7.7 创建第一个“你好,世界”的Chef食谱 73
7.8 小结 76
第8章 使用Chef完成系统管理任务 77
8.1 注册托管Chef 78
8.2 社区烹调书 81
8.3 设置系统管理 81
8.3.1 准备/设置系统管理任务1:管理时间 82
8.3.2 准备/设置系统管理任务2:管理根密码 83
8.4 配置虚拟客户机 84
8.5 系统管理任务 86
8.6 管理根密码 89
8.6.1 创建两个环境文件 89
8.6.2 将环境文件上传到托管Chef组织 90
8.6.3 为每个服务器分配一个环境 91
8.6.4 修改每个服务器的运行列表,以运行Managedroot烹调书 91
8.6.5 对节点应用更改 92
8.6.6 校验实施的策略 93
8.7 小结 94
参考文献 94
第9章 用Chef管理VMware vSphere 95
9.1 Knife插件 96
9.1.1 knife-vsphere入门 97
9.1.2 配置knife.rb文件 97
9.1.3 校验配置 99
9.1.4 组合 99
9.2 Chef配给 101
9.2.1 Chef配给架构 102
9.2.2 Chef配给入门 102
9.2.3 启动某些节点 103
9.3 小结 105
第四部分Ansible 108
第10章 Ansible简介 108
10.1 Ansible架构 108
10.2 准备Ansible测试实验室 109
10.3 Ansible组 110
10.4 Ansible临时命令执行 110
10.4.1 Ping模块 111
10.4.2 Command模块 111
10.4.3 User模块 111
10.4.4 Setup模块 112
10.5 Ansible剧本 112
10.6 Ansible角色 117
10.7 Ansible Galaxy 121
10.8 小结 121
参考文献 121
第11章 Ansible系统管理任务 122
11.1 Web服务器部署 122
11.2 应用层 123
11.3 数据库层 124
11.4 角色结构优化 126
11.5 VMware资源管理 128
11.6 小结 132
参考文献 132
第五部分PowerShell 134
第12章 PowerShell预期状态配置简介 134
12.1 什么是PowerShell DSC 134
12.2 PowerShell DSC需求 135
12.3 PowerShell DSC组件 136
12.3.1 原生命令集 136
12.3.2 托管对象格式文件 136
12.3.3 本地配置管理器 137
12.4 PowerShell DSC配置 138
12.5 PowerShell DSC模式 140
12.5.1 本地推送模式 140
12.5.2 远程推送模式 140
12.5.3 拉取模式 141
12.6 PowerShell DSC资源 142
12.7 小结 144
参考文献 144
第13章 PowerShell DSC实施策略 145
13.1 PowerShell DSC在VMware环境中的用例 145
13.2 用PowerCLI进行脚本化VM部署 146
13.3 在VM模板中加入PowerShell DSC 148
13.4 对新VM实施PowerShell DSC配置所面临的挑战 148
13.4.1 PowerCLIInvoke-VMscript 149
13.4.2 PowerCLI Copy-VMGuestFile 150
13.5 经验教训总结 151
13.6 未来PowerShell DSC在VMware环境中的用例 151
13.7 小结 152
参考文献 152
第六部分 利用容器进行应用程序部署 154
第14章 Docker应用容器简介 154
14.1 什么是应用程序 154
14.1.1 隐藏的复杂性 154
14.1.2 依赖性和配置冲突 155
14.2 Linux容器 155
14.2.1 控制组 155
14.2.2 命名空间 156
14.2.3 容器管理 157
14.3 使用Docker 157
14.3.1 安装Docker 157
14.3.2 Docker守护进程 158
14.3.3 Docker客户端 158
14.3.4 Docker索引 158
14.3.5 运行Docker容器 158
14.3.6 列出运行的容器 159
14.3.7 连接到运行的容器 159
14.3.8 构建和分发Docker容器 161
14.3.9 Dockerfile 161
14.3.10 Docker Hub 162
14.3.11 Docker与虚拟机的对比 163
14.3.12 Docker与配置管理的对比 163
14.4 小结 163
参考文献 163
第15章 大规模运行Docker容器 164
15.1 容器编排 164
15.2 Kubernetes 165
15.3 Kubernetes部署 166
15.3.1 CoreOS和Kubernetes群集管理工具 166
15.3.2 CoreOS群集部署 167
15.3.3 etcd服务器配置 171
15.3.4 Flannel网络覆盖 172
15.3.5 Kubernetes群集节点 172
15.3.6 Kubernetes服务部署 174
15.3.7 Kubernetes 工作负载部署 175
15.4 用Docker实现平台即服务 178
15.5 小结 179
参考文献 179
第七部分DevOps 工具链 182
第16章 使用Razor配给服务器 182
16.1 Razor的工作原理 182
16.2 使用Razor 184
16.2.1 Razor集合和操作 186
16.2.2 构建Razor集合 192
16.3 使用Razor API 201
16.4 Razor组件 203
16.4.1 Razor服务器 203
16.4.2 Razor微内核 203
16.4.3 Razor客户端 203
16.5 安装Razor 203
16.5.1 PE Razor 204
16.5.2 Puppet安装 204
16.5.3 从来源安装 204
16.5.4 人工安装发行版本 204
16.5.5 其他服务 204
16.6 小结 206
参考文献 206
第17章 ELK—— Elasticsearch 、Logstash和Kibana简介 207
17.1 Elasticsearch概述 207
17.1.1 入门 208
17.1.2 理解索引 208
17.1.3 使用数据 209
17.1.4 安装插件 212
17.1.5 使用客户端 214
17.2 Logstash概述 215
17.2.1 入门 216
17.2.2 配置Logstash输入 216
17.2.3 应用过滤器 218
17.2.4 理解输出 219
17.3 Kibana概述 219
17.3.1 共享和保存 223
17.3.2 自定义数据视图 223
17.4 小结 223
参考文献 224
第18章 用Jenkins实现持续集成 225
18.1 持续集成概念 225
18.1.1 持续集成还是持续部署 226
18.1.2 测试自动化 226
18.2 Jenkins架构 227
18.3 Jenkins部署 228
18.4 Jenkins工作流 230
18.4.1 Jenkins服务器配置 230
18.4.2 Jenkins构建任务 232
18.4.3 Git钩子 235
18.4.4 你的第一次构建 237
18.5 质量保证团队 239
18.5.1 验收测试 239
18.5.2 开发团队 239
18.5.3 构建/测试基础设施 239
18.6 小结 239
参考文献 239
第八部分VMware DevOps实践 242
第19章 DevOps环境中的VMware vRealize Automation 242
19.1 DevOps的出现 242
19.2 稳定的敏捷性 243
19.3 人、过程和Conway法则 243
19.4 vRealize Automation 244
19.5 vRealize Application Services 245
19.6 Puppet集成 247
19.7 Code Stream 252
19.8 小结 256
参考文献 256