《Terraform 实战》是由人民邮电出版社出版的一本关于Terraform方面的书籍,作者是斯科特·温克勒(Scott、Winkler),主要介绍了关于Terraform、Terraform实战方面的知识内容,目前在Terraform类书籍综合评分为:8.1分。
书籍介绍
编辑推荐
1.由浅入深,实战功能强大
为用户提供循序渐进的入门介绍,深入剖析更加复杂的现实模式。随着你逐渐学习零停机时间部署等高级技术,你将系统掌握Terraform的精髓,而不是只能简单地复制和粘贴脚本。
2.专业人士编写,参考性强
业界专业人士编写,实战经验丰富,为用户提供实用建议。
3.专业性强,适合专业人士巩固提升
本书适合熟悉主流云平台的开发人员和运维人员自学阅读。本书提供了使用JavaScript和Go编写的示例。
内容简介
本书基于实际项目,揭示如何使用Terraform自动扩展和管理基础架构。本书重点介绍了Terraform0.12的语法、基础知识和高级设计(如零停机时间部署和创建Terraform提供程序)。本书主要内容包括如何使用Terraform,如何管理Terraform资源的生命周期,如何编程,如何在AWS云中部署多层的Web应用程序,如何实现无服务器的部署,如何通过Terraform部署服务器,如何实现零停机部署,如何测试、重构,如何扩展Terraform,如何通过Terraform自动部署,如何实现安全管理。
本书适合作为系统管理员、DevOps工程师、开发人员的自学和参考用书。
目录
- 第一部分Terraform训练营
- 第1章Terraform入门3
- 1.1Terraform的优点4
- 1.1.1置备工具5
- 1.1.2易于使用5
- 1.1.3免费且开源的软件5
- 1.1.4声明式编程6
- 1.1.5云无关6
- 1.1.6表达能力强且高度可扩展7
- 1.2“HelloTerraform!”7
- 1.2.1编写Terraform配置8
- 1.2.2配置AWS提供程序10
- 1.2.3初始化Terraform11
- 1.2.4部署EC2实例12
- 1.2.5销毁EC2实例16
- 1.3新的“HelloTerraform!”18
- 1.3.1修改Terraform配置19
- 1.3.2应用修改20
- 1.3.3销毁基础设施20
- 1.4炉边谈话21
- 小结21
- 第2章Terraform资源的生命周期22
- 2.1过程概述22
- 2.2声明本地文件资源24
- 2.3初始化工作空间25
- 2.4生成执行计划26
- 2.5创建本地文件资源30
- 2.6执行no-op34
- 2.7更新本地文件资源35
- 2.7.1检测配置漂移39
- 2.7.2terraformrefresh41
- 2.8删除本地文件资源42
- 2.9炉边谈话44
- 小结44
- 第3章函数式编程45
- 3.1有趣的MadLibs46
- 3.1.1输入变量47
- 3.1.2使用变量定义文件赋值48
- 3.1.3验证变量49
- 3.1.4打乱列表49
- 3.1.5函数51
- 3.1.6输出值52
- 3.1.7模板53
- 3.1.8生成输出结果54
- 3.2生成许多MadLibs故事55
- 3.2.1for表达式56
- 3.2.2局部值57
- 3.2.3隐式依赖58
- 3.2.4count元实参60
- 3.2.5条件表达式61
- 3.2.6更多模板62
- 3.2.7本地文件63
- 3.2.8压缩文件64
- 3.2.9应用修改67
- 3.3炉边谈话68
- 小结69
- 第4章在AWS中部署多层Web应用程序70
- 4.1架构71
- 4.2Terraform模块73
- 4.2.1模块的语法73
- 4.2.2根模块74
- 4.2.3标准模块结构74
- 4.3根模块75
- 4.4网络模块78
- 4.5数据库模块82
- 4.5.1从网络模块传递数据83
- 4.5.2生成随机密码84
- 4.6自动扩展模块86
- 4.6.1下滴数据86
- 4.6.2模板化cloudinit_config88
- 4.7部署Web应用程序92
- 4.8炉边谈话93
- 小结94
- 第二部分现实环境下的Terraform
- 第5章简单的无服务器部署97
- 5.1“两美分网站”98
- 5.2架构和计划100
- 5.3编写代码104
- 5.3.1资源组105
- 5.3.2存储容器106
- 5.3.3存储blob107
- 5.3.4Function应用108
- 5.3.5终润色111
- 5.4部署到Azure114
- 5.5将Azure资源管理器与Terraform结合起来116
- 5.5.1部署不支持的资源116
- 5.5.2从遗留代码迁移117
- 5.5.3生成配置代码118
- 5.6炉边谈话119
- 小结119
- 第6章与朋友协同使用
- Terraform120
- 6.1标准后端和增强后端120
- 6.2开发S3后端模块121
- 6.2.1架构122
- 6.2.2扁平模块123
- 6.2.3编写代码124
- 6.3共享模块130
- 6.3.1GitHub130
- 6.3.2Terraform注册表131
- 6.4每人一个S3后端133
- 6.4.1部署S3后端133
- 6.4.2在S3后端存储状态135
- 6.5在工作空间中复用配置代码138
- 6.5.1部署多个环境139
- 6.5.2清理142
- 6.6TerraformCloud简介143
- 6.7炉边谈话144
- 小结144
- 第7章CI/CD管道即代码145
- 7.1两个部署146
- 7.2GCP上的Docker容器的CI/CD147
- 7.2.1设计管道147
- 7.2.2施工设计148
- 7.3初始工作空间设置149
- 7.4动态配置和置备程序151
- 7.4.1for_each与count152
- 7.4.2使用置备程序执行脚本153
- 7.4.3带有local-exec置备程序的null资源155
- 7.4.4处理重复的配置块156
- 7.4.5动态块158
- 7.5配置无服务器容器160
- 7.6部署静态基础设施162
- 7.7Docker容器的CI/CD165
- 7.8炉边谈话168
- 小结169
- 第8章多云MMORPG170
- 8.1混合云负载均衡171
- 8.1.1架构概览172
- 8.1.2代码174
- 8.1.3部署176
- 8.2在Nomad集群联邦上部署一个MMORPG178
- 8.2.1集群联邦基础179
- 8.2.2架构179
- 8.2.3阶段1:静态基础设施181
- 8.2.4阶段2:动态基础设施186
- 8.2.5准备玩家1189
- 8.3使用托管服务重新设计MMORPG190
- 8.3.1代码191
- 8.3.2准备玩家2192
- 8.4炉边谈话193
- 小结194
- 第三部分精通Terraform
- 第9章零停机时间部署197
- 9.1自定义生命周期198
- 9.1.1使用create_before_destroy实现零停机时间部署198
- 9.1.2其他考虑因素200
- 9.2蓝/绿部署201
- 9.2.1架构202
- 9.2.2代码204
- 9.2.3部署204
- 9.2.4蓝/绿切换206
- 9.2.5其他考虑因素207
- 9.3配置管理208
- 9.3.1将Terraform和Ansible组合起来208
- 9.3.2代码209
- 9.3.3基础设施部署215
- 9.3.4应用程序部署216
- 9.4炉边谈话218
- 小结218
- 第10章测试和重构220
- 10.1置备自助基础设施221
- 10.1.1架构221
- 10.1.2代码222
- 10.1.3预部署224
- 10.1.4污染和轮转访问密钥225
- 10.2重构Terraform配置227
- 10.2.1模块化代码227
- 10.2.2模块展开229
- 10.2.3使用局部值替换多行字符串231
- 10.2.4循环多个模块实例233
- 10.2.5新的IAM模块234
- 10.3迁移Terraform状态236
- 10.3.1状态文件的结构236
- 10.3.2移动资源237
- 10.3.3重新部署238
- 10.3.4导入资源239
- 10.4测试基础设施即代码242
- 10.4.1编写一个基本的Terraform测试243
- 10.4.2测试套件245
- 10.4.3运行测试247
- 10.5炉边谈话247
- 小结248
- 第11章通过编写自定义提供程序扩展Terraform249
- 11.1Terraform提供程序的蓝图250
- 11.1.1Terraform提供程序的基础知识250
- 11.1.2Pestore提供程序的架构251
- 11.2编写Petstore提供程序253
- 11.2.1设置Go项目253
- 11.2.2配置提供程序模式254
- 11.3创建宠物资源257
- 11.3.1定义Create()259
- 11.3.2定义Read()261
- 11.3.3定义Update()262
- 11.3.4定义Delete()263
- 11.4编写验收测试265
- 11.4.1测试提供程序模式265
- 11.4.2测试宠物资源266
- 11.5生成、测试、部署268
- 11.5.1部署PetstoreAPI268
- 11.5.2测试和生成提供程序270
- 11.5.3安装提供程序271
- 11.5.4宠物即代码271
- 11.6炉边谈话275
- 小结276
- 第12章自动化Terraform277
- 12.1仿造版的TerraformEnterprise278
- 12.1.1对TerraformEnterprise实施逆向工程278
- 12.1.2设计细节280
- 12.2从根级别开始281
- 12.3开发一个TerraformCI/CD管道282
- 12.3.1声明输入变量282
- 12.3.2IAM角色和策略283
- 12.3.3构建计划和应用阶段286
- 12.3.4配置环境变量289
- 12.3.5声明管道即代码291
- 12.3.6终代码294
- 12.4部署TerraformCI/CD管道297
- 12.4.1创建源代码仓库297
- 12.4.2创建小特权部署策略298
- 12.4.3配置Terraform变量299
- 12.4.4部署到AWS299
- 12.4.5连接到GitHub301
- 12.5使用管道部署“HelloWorld!”301
- 12.6炉边谈话305
- 小结306
- 第13章安全和密钥管理307
- 13.1保护Terraform状态308
- 13.1.1从Terraform状态删除不必要的密钥308
- 13.1.2使用小特权访问控制312
- 13.1.3静态加密313
- 13.2保护日志314
- 13.2.1哪些敏感信息会被泄露315
- 13.2.2local-exec置备程序的危险317
- 13.2.3外部数据源的危险317
- 13.2.4HTTP提供程序的危险319
- 13.2.5限制日志访问320
- 13.3管理静态密钥320
- 13.3.1环境变量320
- 13.3.2Terraform变量322
- 13.3.3重定向敏感的Terraform变量324
- 13.4使用动态密钥325
- 13.4.1HashiCorpVault326
- 13.4.2AWSSecretsManager327
- 13.5Sentinel和策略即代码328
- 13.5.1编写一个基本的Sentinel策略329
- 13.5.2阻塞local-exec置备程序330
- 13.6结语331
- 小结331
- 附录AAWS身份验证333
- 附录BAzure身份验证335
- 附录CGCP身份验证337
- 附录D使用Shell提供程序
- 创建自定义资源339
- 附录E创建Petstore
- 数据源344