-
内容大纲
本书基于实际项目,揭示如何使用Terraform自动扩展和管理基础架构。本书重点介绍了Terraform 0.12的语法、基础知识和高级设计(如零停机时间部署和创建Terraform提供程序)。本书主要内容包括如何使用Terraform,如何管理Terraform资源的生命周期,如何编程,如何在AWS云中部署多层的Web应用程序,如何实现无服务器的部署,如何通过Terraform部署服务器,如何实现零停机部署,如何测试、重构,如何扩展Terraform,如何通过Terraform自动部署,如何实现安全管理。
本书适合作为系统管理员、DevOps工程师、开发人员的自学和参考用书。 -
作者介绍
斯科特·温克勒,Scott Winkler是一位DevOps工程师,还是著名的Terraform专家。他在HashiConf和HashiTalks上展示过自己的成果,并且是HashiCorp的核心贡献者。Scott在社区中很活跃,开发了许多模块和提供程序。在空闲时间,Scott喜欢骑马。Scott还负责提供Terraform的独立咨询服务。 -
目录
第一部分 Terraform训练营
第1章 Terraform入门
1.1 Terraform的优点
1.1.1 置备工具
1.1.2 易于使用
1.1.3 免费且开源的软件
1.1.4 声明式编程
1.1.5 云无关
1.1.6 表达能力强且高度可扩展
1.2 “Hello Terraform!”
1.2.1 编写Terraform配置
1.2.2 配置AWS提供程序
1.2.3 初始化Terraform
1.2.4 部署EC2实例
1.2.5 销毁EC2实例
1.3 新的“Hello Terraform!”
1.3.1 修改Terraform配置
1.3.2 应用修改
1.3.3 销毁基础设施
1.4 炉边谈话
小结
第2章 Terraform资源的生命周期
2.1 过程概述
2.2 声明本地文件资源
2.3 初始化工作空间
2.4 生成执行计划
2.5 创建本地文件资源
2.6 执行no-op
2.7 更新本地文件资源
2.7.1 检测配置漂移
2.7.2 terraform refresh
2.8 删除本地文件资源
2.9 炉边谈话
小结
第3章 函数式编程
3.1 有趣的Mad Libs
3.1.1 输入变量
3.1.2 使用变量定义文件赋值
3.1.3 验证变量
3.1.4 打乱列表
3.1.5 函数
3.1.6 输出值
3.1.7 模板
3.1.8 生成输出结果
3.2 生成许多Mad Libs故事
3.2.1 for表达式
3.2.2 局部值
3.2.3 隐式依赖
3.2.4 count元实参
3.2.5 条件表达式
3.2.6 更多模板
3.2.7 本地文件
3.2.8 压缩文件
3.2.9 应用修改
3.3 炉边谈话
小结
第4章 在AWS中部署多层Web应用程序
4.1 架构
4.2 Terraform模块
4.2.1 模块的语法
4.2.2 根模块
4.2.3 标准模块结构
4.3 根模块
4.4 网络模块
4.5 数据库模块
4.5.1 从网络模块传递数据
4.5.2 生成随机密码
4.6 自动扩展模块
4.6.1 下滴数据
4.6.2 模板化cloudinit_config
4.7 部署Web应用程序
4.8 炉边谈话
小结
第二部分 现实环境下的Terraform
第5章 简单的无服务器部署
5.1 “两美分网站”
5.2 架构和计划
5.3 编写代码
5.3.1 资源组
5.3.2 存储容器
5.3.3 存储blob
5.3.4 Function应用
5.3.5 最终润色
5.4 部署到Azure
5.5 将Azure资源管理器与Terraform结合起来
5.5.1 部署不支持的资源
5.5.2 从遗留代码迁移
5.5.3 生成配置代码
5.6 炉边谈话
小结
第6章 与朋友协同使用Terraform
6.1 标准后端和增强后端
6.2 开发S3后端模块
6.2.1 架构
6.2.2 扁平模块
6.2.3 编写代码
6.3 共享模块
6.3.1 GitHub
6.3.2 Terraform注册表
6.4 每人一个S3后端
6.4.1 部署S3后端
6.4.2 在S3后端存储状态
6.5 在工作空间中复用配置代码
6.5.1 部署多个环境
6.5.2 清理
6.6 Terraform Cloud简介
6.7 炉边谈话
小结
第7章 CI/CD管道即代码
7.1 两个部署
7.2 GCP上的Docker容器的CI/CD
7.2.1 设计管道
7.2.2 施工设计
7.3 初始工作空间设置
7.4 动态配置和置备程序
7.4.1 for_each与count
7.4.2 使用置备程序执行脚本
7.4.3 带有local-exec置备程序的null资源
7.4.4 处理重复的配置块
7.4.5 动态块
7.5 配置无服务器容器
7.6 部署静态基础设施
7.7 Docker容器的CI/CD
7.8 炉边谈话
小结
第8章 多云MMORPG
8.1 混合云负载均衡
8.1.1 架构概览
8.1.2 代码
8.1.3 部署
8.2 在Nomad集群联邦上部署一个MMORPG
8.2.1 集群联邦基础
8.2.2 架构
8.2.3 阶段1:静态基础设施
8.2.4 阶段2:动态基础设施
8.2.5 准备玩家
8.3 使用托管服务重新设计MMORPG
8.3.1 代码
8.3.2 准备玩家
8.4 炉边谈话
小结
第三部分 精通Terraform
第9章 零停机时间部署
9.1 自定义生命周期
9.1.1 使用create_before_destroy实现零停机时间部署
9.1.2 其他考虑因素
9.2 蓝/绿部署
9.2.1 架构
9.2.2 代码
9.2.3 部署
9.2.4 蓝/绿切换
9.2.5 其他考虑因素
9.3 配置管理
9.3.1 将Terraform和Ansible组合起来
9.3.2 代码
9.3.3 基础设施部署
9.3.4 应用程序部署
9.4 炉边谈话
小结
第10章 测试和重构
10.1 置备自助基础设施
10.1.1 架构
10.1.2 代码
10.1.3 预部署
10.1.4 污染和轮转访问密钥
10.2 重构Terraform配置
10.2.1 模块化代码
10.2.2 模块展开
10.2.3 使用局部值替换多行字符串
10.2.4 循环多个模块实例
10.2.5 新的IAM模块
10.3 迁移Terraform状态
10.3.1 状态文件的结构
10.3.2 移动资源
10.3.3 重新部署
10.3.4 导入资源
10.4 测试基础设施即代码
10.4.1 编写一个基本的Terraform测试
10.4.2 测试套件
10.4.3 运行测试
10.5 炉边谈话
小结
第11章 通过编写自定义提供程序扩展Terraform
11.1 Terraform提供程序的蓝图
11.1.1 Terraform提供程序的基础知识
11.1.2 Pestore提供程序的架构
11.2 编写Petstore提供程序
11.2.1 设置Go项目
11.2.2 配置提供程序模式
11.3 创建宠物资源
11.3.1 定义Create()
11.3.2 定义Read()
11.3.3 定义Update()
11.3.4 定义Delete()
11.4 编写验收测试
11.4.1 测试提供程序模式
11.4.2 测试宠物资源
11.5 生成、测试、部署
11.5.1 部署Petstore API
11.5.2 测试和生成提供程序
11.5.3 安装提供程序
11.5.4 宠物即代码
11.6 炉边谈话
小结
第12章 自动化Terraform
12.1 仿造版的Terraform Enterprise
12.1.1 对Terraform Enterprise实施逆向工程
12.1.2 设计细节
12.2 从根级别开始
12.3 开发一个Terraform CI/CD管道
12.3.1 声明输入变量
12.3.2 IAM角色和策略
12.3.3 构建计划和应用阶段
12.3.4 配置环境变量
12.3.5 声明管道即代码
12.3.6 最终代码
12.4 部署Terraform CI/CD管道
12.4.1 创建源代码仓库
12.4.2 创建最小特权部署策略
12.4.3 配置Terraform变量
12.4.4 部署到AWS
12.4.5 连接到GitHub
12.5 使用管道部署“Hello World!”
12.6 炉边谈话
小结
第13章 安全和密钥管理
13.1 保护Terraform状态
13.1.1 从Terraform状态删除不必要的密钥
13.1.2 使用最小特权访问控制
13.1.3 静态加密
13.2 保护日志
13.2.1 哪些敏感信息会被泄露
13.2.2 local-exec置备程序的危险
13.2.3 外部数据源的危险
13.2.4 HTTP提供程序的危险
13.2.5 限制日志访问
13.3 管理静态密钥
13.3.1 环境变量
13.3.2 Terraform变量
13.3.3 重定向敏感的Terraform变量
13.4 使用动态密钥
13.4.1 HashiCorp Vault
13.4.2 AWS Secrets Manager
13.5 Sentinel和策略即代码
13.5.1 编写一个基本的Sentinel策略
13.5.2 阻塞local-exec置备程序
13.6 结语
小结
附录A AWS身份验证
附录B Azure身份验证
附录C GCP身份验证
附录D 使用Shell提供程序创建自定义资源
附录E 创建Petstore数据源
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...