本书的初衷是帮助大家更好地编写基础设施即代码(Infrastructure as Code,IaC),并且能够在不影响关键业务系统的情况下,稳定高效地变更基础设施资源。本书重点介绍了个人、团队或公司在基础设施系统中应用的模式与实践,聚焦能够应用到IaC 中的高级模式与实践,同时也提供示例演示了具体的实现方法。
本书读者对象
本书适用于任何开始使用云基础设施和IaC,并希望在团队或公司范围内对其进行扩展的人(软件开发人员、安全工程师、质量保证工程师或基础设施工程师)。通过本书,你将能编写一些IaC,并手动运行它们以在公有云上创建资源。
你可能正面临着在整个团队或公司中推动IaC 协作的挑战。你需要解决多个团队成员和其他团队在安全性、合规性或功能性方面对基础设施进行更改并请求更新所导致的摩擦问题。有许多的资源都是围绕某个工具来介绍IaC 的,而本书则提供了一些通用的模式与实践方法,适用于将随着时间的推移而持续演进的各种基础设施用例、工具和系统。
本书的组织方式:路线图
本书共分为3 个部分,包含13 章内容。
第Ⅰ部分介绍了IaC,以及如何编写它。
● 第1 章对基础设施即代码进行了定义,并介绍了其好处和原则。本章解释了本书包含的一些用Python 编写的例子,由HashiCorp Terraform 运行,并部署到谷歌云平台(GCP)。另外,还会讨论在你的IaC 旅程中,你会遇到的工具和用例。
● 第2 章深入探讨了不可变性原理以及如何将现有的基础设施资源迁移到IaC。另外,还介绍了编写整洁IaC 的实践。
● 第3 章提供了一些将基础设施资源划分和归类为模块的模式,每种模式的介绍都包含一个代码示例和一个用例。
● 第4 章介绍了如何管理基础设施资源和模块之间的依赖关系,并通过依赖注入和一些常见模式将它们解耦。
第Ⅱ部分描述了如何以团队形式来开展 IaC 的编写与协作。
● 第5 章介绍了在不同的存储库结构中呈现IaC 并在团队中共享它们的一些实践和考量。
● 第6 章提供了基础设施的测试策略,描述了每种类型的测试,以及如何为IaC 编写这些测试。
● 第7 章将持续交付应用于IaC,涵盖了分支模型的高级视图,以及团队如何使用这些模型对基础设施进行变更。
● 第8 章提供了构建安全和合规IaC 的技术,其中包括测试和标记。
第Ⅲ部分介绍了如何在整个公司范围内管理IaC。
● 第9 章将不可变性应用于基础设施变更,引入了一个蓝绿部署的示例。
● 第10 章通过重构大规模的IaC 来提高它们的可维护性,并限制变更的影响范围以减轻任一代码库中出现变更失败造成的影响。
● 第11 章描述了如何还原和回滚IaC 对系统的变更。
● 第12 章讨论了使用IaC 来管理云计算成本的方法,以及IaC 成本估算的示例。
● 第13 章总结了本书中介绍的管理和更新IaC 工具的实践方法。
你会发现整本书中有许多概念是相互关联的,如果你以前没有实践过IaC,推荐你按顺序阅读所有章节。当然,你也可以选择从最能应对你在IaC 实践中所面临的挑战的那部分开始阅读。
在阅读包含特定概念的各章节前,你可能需要先阅读第1 章或附录A,以了解如何阅读和运行示例。附录A 提供了与示例相关的库、工具和平台的更多详细信息,附录B 则提供了所有练习题的答案。