商品详情
书名:Terraform经典实例
书号:9787523907368
定价:98元
作者:[荷兰]克里姆·萨蒂尔利(Kerim Satirli),[美]泰勒·多尔扎尔(Taylor Dolezal)
出版时间:2026-01-28
出版社:中国电力出版社
页码: 328 字数(千字):323
开本:16开 版次:1 印次:1
品牌介绍
中国电力出版社成立于 1951 年,作为中国成立最早的中央科技出版社之一,曾隶属于水利电力部、能源部、电力工业部、国家电力公司,现为国家电网公司所属的科技出版社,在电气技术专业出版领域享有极高的声誉。该社作为以图书出版为主体,音像、电子出版物、期刊、网络出版共同发展的大型出版企业,以强大的出版资源和高素质的专业队伍,致力于向读者提供包括电力工程、电气工程、建筑工程、电子技术、信息技术、外语、大中专教材、家教等学科门类齐全的权威出版物,也竭力为广大师生提供精品教材,是教育部和北京市教委规划教材的出版基地之一。
编辑推荐
专家推荐 “Terraform正在彻底改变人们构建全球数字基础设施的方式。本书为从业者提供了绝佳的指南,帮助他们利用这一工具解决现实挑战,并在大规模现代基础设施管理中建立秩序。” —— Chris Devers,EditShare技术主管 “这本得力的案头伙伴可以帮助你攻克棘手的任务。” —— Adam McPartlan,Hippo Digital首席顾问 编辑推荐 在当今企业的IT版图中,云服务和SaaS软件无处不在,这要求我们从手动配置服务转向以代码化为核心的结构化方法。Terraform 提供了强大的工具,能够在数千个不同的云服务提供商和SaaS平台上统一管理整个IT生命周期。 通过将基础设施定义为代码,你可以安全且可预测地进行变更,模块化关键构建块,创建可复用的服务组件。本书中的每个实例都针对特定问题给出解决方案,并在给出解决方案前详尽地解析“如何做”和“为什么这样做”。 如果你刚开始接触Terraform和代码化基础设施,本书将为你打下坚实的基础,为未来数年的实践铺路;如果你已经是高级用户,本书将助你巩固知识,在跨多提供商的复杂基础设施挑战中更上一层楼。
产品特色
由浅入深,实战功能强大。为用户提供循序渐进的入门介绍,深入剖析更加复杂的现实模式。随着你逐渐学习零停机时间部署等高级技术,你将系统掌握Terraform的精髓,而不是只能简单地复制和粘贴脚本。专业性强,适合专业人士巩固提升。本书适合熟悉主流云平台的开发人员和运维人员自学阅读。本书提供了使用JavaScript和Go编写的示例。
作者介绍
Kerim Satirli现任HashiCorp 高级开发者布道师,专注于可持续的基础设施与编排工作流。Taylor Dolezal现任云原生计算基金会(CNCF)生态系统负责人,致力于推动云原生技术的创新与协作。
内容介绍
在当今企业的IT版图中,云服务和SaaS软件无处不在,这要求我们从手动配置服务转向以代码化为核心的结构化方法。Terraform 提供了强大的工具,能够在数千个不同的云服务提供商和SaaS平台上统一管理整个IT生命周期。本书的主要内容有:如何结合Terraform与版本控制系统。Terraform管理的基础设施的验证与测试方法。导入既有资源的方法。将基础设施服务转化为可复用组件。Terraform与其他HashiCorp工具的集成。容器化工作负载的部署。
本书适用于本书适合所有负责创建、管理或优化基础设施的人员。
前言
前言
在不远的过去,管理IT 基础设施曾是一项艰巨的任务。系统管理员们必须同时应对令人眼花缭乱的人工流程、自定义脚本,以及各种厂商专用工具,同时还要确保系统平稳运行。那个时代充满了配置漂移、意外停机,还有挥之不去的恐惧,“如果搭建这个系统的人离职了怎么办?”
然后,DevOps 和“基础设施即代码”(infrastructure as code,IaC)的时代到来了。这场变革带来了强大的工具,让我们能够以编程方式定义、部署和管理基础设施。屹立在这场转型浪潮最前沿的是HashiCorp Terraform,即现在最常用的IaC 工具。
借助Terraform,你可以使用声明式语言描述整个基础设施,像管理代码库一样对基础设施进行版本控制、审查、演进。从服务器、数据库到负载均衡器乃至DNS 记录,只要存在对应的API,Terraform 庞大的provider 生态系统就很有可能提供支持。
告别了在云服务控制台中手动操作或为各家厂商编写脚本的日子,你现在可以跨越多云和服务使用统一的工作流。
本书就是你的指南,从基础概念到高级技巧,再到真实世界中的实践案例,带你释放Terraform 的全部潜力。
目标读者
本书适合所有负责创建、管理或优化基础设施的人员。无论你是DevOps 工程师、站点可靠性工程师(SRE)、基础设施开发人员、系统管理员,还是有意拓展技能的开发者,只要你曾经部署过服务器、设置过负载均衡器,或者为凌晨3点的线上事故彻夜难眠,那么这本书就是为你准备的。
我们不要求你是基础设施或编程方面的专家。只要对云计算概念有基本了解,能熟练使用命令行就够了,其余的知识都可以在学习过程中掌握。
创作缘由
作为基础设施即代码的长期实践者和推广者,我们亲眼见证了Terraform 所带来的变革力量。但我们也经历过Terraform 陡峭的学习曲线,以及在实际落地过程中遇到的难题与挑战。
尽管Terraform 的官方文档在参考性方面表现出色,但显然仍缺乏一种基于配方的实用方法来学习和应用Terraform。我们希望打造一本既能讲解“怎么做”,也能说明“为何做”“何时做”的学习资料。本书将我们多年经验的总结,以实用且可操作的形式呈现给读者。如果当初有这样一本书做指导,我们的Terraform 之旅一定会轻松许多。
本书内容
以下是本书各章内容的简要概述:
• 第1 章介绍Terraform 快速上手,涵盖安装流程、基本概念、首次部署。
• 第2、3 章深入介绍了Terraform 基础及语法模式、函数以及编写简洁高效代码的最佳实践。
• 第4 章探讨Terraform 模块与provider,学习如何构建可复用、可伸缩的基础设施组件。
• 第5 章讲解如何使用Terraform 管理容器,包括部署到Kubernetes 以及其他编排平台。
• 第6 章介绍HCP Terraform 与Terraform Enterprise,帮助你在团队环境中实现协作和治理。
• 第7 章聚焦于Terraform 中使用与管理机密,帮助你确保敏感数据的安全。
• 第8、9 章详细阐述了高级Terraform 的技术及进行配置管理,包括配置管理和复杂的部署策略。
• 第10 章结合真实用例,演示如何应用所学知识解决实际的基础设施难题。
本书未包含的内容
这本书并非面面俱到的参考手册,不会逐一列举所有的Terraform 资源和provider。关于这些细节,我们推荐阅读Terraform 的官方文档。我们更注重实践应用、最佳实践以及现实中的使用场景,帮助你真正掌握Terraform。
我们尽量让示例通俗易懂,示例以AWS 为主,原因在于其普及程度和免费套餐的优势。不过,你在本书中学到的原理和技术同样适用于其他云提供商和服务。
排版约定
本书使用以下排版约定:
斜体(Italic)
表示新术语、URL、电子邮件地址、文件名、文件扩展名。
等宽字体(Constant width)
表示程序代码,以及正文中出现的变量名、函数名、数据库、数据类型、环境变量、语句、关键字等。
等宽粗体(Constant width bold)
表示应该由用户照原样输入的命令或其他文本。
等宽斜体(Constant width italic)
表示该文本应该被替换为用户输入的值或根据上下文确定的值。
代码示例的使用
本书示例代码和练习等补充材料可从http://github.com/terraform-cookbook/recipes 下载。我们鼓励你克隆下列仓库,在阅读时结合示例操作:
git clone GitHub 仓库中找到格式正确的原始代码。
如果你有技术疑问或在使用代码示例时遇到问题,请发送电子邮件至support@oreilly.com。
对本书中文版有任何建议可以发电子邮件到errata@oreilly.com.cn。
本书旨在帮助你完成工作。一般来说,你可以在自己的程序或文档中使用本书提供的示例代码。除非需要复制大量代码,否则无须联系我们获得许可。例如,使用本书中的几个代码片段编写程序无须获得许可,销售或分发O’Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无须获得许可,将本书中的大量示例代码放入你的产品文档中则需要获得许可。
我们感谢,但不要求在引用本书内容时标注出处。出处说明通常包括书名、作者、出版社、ISBN,例如:“Terraform Cookbook by Kerim Satirli and Taylor Dolezal (O’Reilly). Copyright 2025 Hello, Operator BV and Taylor Dolezal, 978-1-098-10846-5”。
如果你觉得自己对示例代码的用法超出了上述许可的范围, 欢迎你通过permissions@oreilly.com 与我们联系。
我们希望这本书能成为你通过Terraform 探索IaC 精彩世界的可靠指南。愿你的基础设施始终处于理想状态,部署操作迅速可靠,每一次执行terraform apply 都不出差错。
请记住,在Terraform 的世界里,犯错不仅仅是“人之常情”,反而它是一个测试回滚策略的绝佳机会。现在,放心大胆地执行terraform apply 吧!
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:
/。
联系我们
任何有关本书的意见或疑问,请按照以下地址联系出版社。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
奥莱利技术咨询(北京)有限公司
O’Reilly 的每本书都有专属网页,其中包括勘误表、示例代码以及其他信息。
本书的网址为https://oreil.ly/terraform-cookbook。
要了解更多O’Reilly 图书、培训课程、新闻,请访问https://
。
我们的LinkedIn:
。
我们的YouTube:
。
致谢
我们衷心感谢为本书创作作出贡献的个人和团体。你们的付出我们铭记于心。
首先,感谢O’Reilly Media 的杰出团队。特别感谢Michele Cronin 在整个项目中的宝贵指导和支持。同时也感谢Beth Kelly 的专业意见以及John Devins 的协助。你们的共同努力极大提升了本书的质量。
感谢审稿人Rosemary Wong、Chris Devers、Werner Dijkerman、Adam McPartlan、Jess Males、Ben Muschko 和Vishwesh Shrimali。你们的真知灼见对本书的完善起到了关键作用。衷心感谢你们的专业支持和辛勤付出。
最后但同样重要的是, 我们要向充满活力的Terraform 社区致敬。就像Terraform 一样,本书的诞生同样离不开这个社区中无数人的集体智慧、创造力与热情。不论是通过代码、文档,还是分享经验,你们的卓越贡献不仅成就了本书,也推动了整个Terraform 生态系统的发展。正是社区的协作精神与奉献精神,让我们所有人受益良多。
所有参与这一旅程的人,无论是否在此被提及姓名,我们都由衷地感谢。你们的支持、鼓励以及专业知识成就了这本书。
目录
目录
前言 1
第1 章 Terraform 快速上手 9
11 何时使用Terraform 10
12 何时不宜使用Terraform 11
13 Terraform 的安装与配置 12
14 理解Terraform provider16
15 理解Terraform 模块 19
16 使用terraform console 修改Terraform 状态 20
17 使用HashiCorp Cloud Platform Terraform 21
18 在Visual Studio Code 中使用Terraform 23
19 管理Terraform provider 的版本约束 25
110 部署受版本控制的Terraform 代码仓库的策略 27
111 使用Terraform 部署Docker 容器 29
112 从0x 升级到1x 及以上版本的Terraform 30
113 使用Terraform 变量 32
114 一致代码带来的一致体验33
第2 章 Terraform 基础 37
21 格式化与验证Terraform 代码 37
22 使用terraform console 进行快速实验 38
23 使用TFLint 提升代码质量 39
24 使用TFSec 提升代码质量 41
25 使用前置条件与后置条件验证代码42
26 使用开放策略代理验证代码 44
27 使用 terraformdocs 编写代码文档 46
28 使用 GitHub Actions 自动化代码校验 49
29 使用Dependabot 自动更新provider 版本 51
210 使用GitHub Codespaces 与DevContainers 53
211 使用Terraform 限制影响范围 57
第3 章 Terraform 语法模式 61
31 使用trimspace() 清理用户输入 61
32 删除前缀和后缀 62
33 使用正则表达式 64
34 高级字符串处理 66
35 使用title()、upper()、lower() 处理区分大小的字符串 67
36 按字母顺序排序列表 69
37 根据CIDR 地址块创建子网 71
38 与本地文件系统交互 74
39 渲染模板76
310 验证输入字符串 78
311 使用can 和try 优化数据检索 80
312 按序处理输入数据 84
313 为错误输入设计良好的错误消息 87
314 跨Terraform 状态使用数据 89
第4 章 Terraform 模块与provider 93
41 使用公共模块创建EKS 集群 94
42 使用GitHub Actions 检查Terraform 的代码规范 98
43 对Terraform provider 进行身份验证 102
44 私有模块的身份验证 104
45 创建一个 Terraform 模块 106
46 使用Terraform 管理GitHub 机密 109
47 使用Terraform 管理GitHub 仓库 111
48 使用Consul KV 实现动态配置 114
49 基于服务健康状态的provider 配置 117
410 使用provider 读取Terraform 状态 120
411 使用多个同类provider 123
第5 章 使用Terraform 管理容器 127
51 使用本地与远程Docker 镜像 127
52 区分集群部署与集群配置 129
53 授权Terraform 执行集群操作 132
54 使用YAML 在Kubernetes 中调度容器 133
55 使用HCL 在Kubernetes 中调度容器 135
56 使用k2tf 将Kubernetes YAML 转换为HCL 137
57 调整Kubernetes 部署的注解 139
58 调整Kubernetes Deployment 的配置 141
59 使用Terraform 应用Kubernetes NetworkPolicy 143
510 使用 Helm 部署容器 147
511 使用Helm 为Kubernetes 部署启用监控 149
512 在HashiCorp Nomad 中调度容器 153
第6 章 HCP Terraform 与Terraform Enterprise 157
61 设置HCP Terraform 158
62 集成HCP Terraform 和VCS163
63 使用HCP Terraform 管理Terraform 状态 165
64 结合使用HCP Terraform 与GitHub Actions 167
65 实现基于HCP Terraform 的协作式工作流 169
66 排查HCP Terraform 和Terraform Enterprise 的故障 172
67 以代码形式实施策略 174
68 使用HCP Terraform 管理成本 177
69 利用远程操作进行大规模部署 180
610 高级状态管理与恢复 183
第7 章 在Terraform 中使用与管理机密 187
71 在Terraform 中处理敏感数据 188
72 从HashiCorp Vault 中获取“键– 值”对 190
73 使用Kubernetes 原生功能管理Kubernetes Secret 对象 192
74 使用Vault 和Terraform 管理Kubernetes Secret 对象 195
75 将机密存储为环境变量 199
76 机密审计与轮换 201
77 使用Terraform 与密码管理器管理机密 203
78 Terraform 机密管理的合规性与治理 205
79 使用HashiCorp Vault 管理动态机密 207
710 在CI/CD 流水线中安全注入机密210
第8 章 使用Terraform 进行配置管理 215
81 使用Terraform 编写shell 脚本 216
82 使用Terraform 编写Ansible 配置 217
83 使用Consul 键值存储实现动态配置 219
84 从HTTP 接口获取并使用数据 222
85 在Terraform 中应用条件逻辑 223
86 将现有基础设施导入Terraform 226
87 使用Terraform 工作区 228
88 使用Terraform 模板 230
89 管理Terraform 资源之间的依赖关系 232
810 使用Terraform 实现蓝绿部署 234
第9 章 高级Terraform 技术 237
91 使用Terraform 编写配置文件 238
92 编写CloudInit 配置 240
93 在CI/CD 流水线中集成Terraform 模块 242
94 Terraform 高级状态管理 245
95 Terraform 与多云策略 248
96 适用于可伸缩架构的Terraform 实践 251
97 Terraform 自定义provider 开发 254
98 将Terraform 与监控工具集成 258
99 使用Terraform 管理安全性与合规性 263
910 Terraform 的高级调试技术 268
第10 章 真实用例 273
101 使用Terraform 工作区管理多个环境 273
102 跨区域部署高可用Web 应用 276
103 在AWS EKS 上部署可伸缩的Kubernetes 集群280
104 使用Terraform 实现蓝绿部署 284
105 使用Terraform 与AWS RDS 实现自动化数据库迁移 289
106 在AWS Lambda 与API Gateway 上部署无服务器应用 293
107 使用IaC 实施GitOps 工作流 297
108 使用Terraform 与竞价实例优化成本 301
109 使用Terraform 部署多云监控解决方案 304
1010 使用Terraform 与AWS 实现自动化灾难恢复 308
- 有电书房
- 扫描二维码,访问我们的微信店铺