第 10 章 基础设施即代码 基础设施即代码
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在 之前,我们有花哨的 DevOps 头衔和职位描述,我们是卑微的系统管理员,简称系统管理员。那是一段黑暗的、云时代之前的日子,我们不得不在汽车后备箱里装上裸机服务器,然后开到主机托管(colo)设施,为服务器架设机架、布线、安装带轮子的显示器/键盘/鼠标,并逐一进行设置。格瑞格至今想起他在主机代管中心度过的那些时光,在刺眼的灯光和冰冷的空调下度过的时光,仍心有余悸。我们必须是 bash 脚本编程的行家里手,后来我们又学会了 Perl,更幸运的人还学会了 Python。俗话说,2004 年前后的互联网是用胶带和泡泡糖粘起来的。
2006 至 2007 年间,我们发现了Amazon EC2 实例的神奇世界。我们可以通过简单的点击界面或命令行工具来配置服务器。不用再开车去主机托管设施,不用再堆叠和布线裸机服务器。我们可以疯狂地同时启动 10 个 EC2 实例。甚至 20 个!甚至 100 个!天马行空。不过,我们很快就发现,使用 SSH 手动连接到每个 EC2 实例,然后在每个实例上分别设置我们的应用程序是无法扩展的。配置实例本身相当容易。困难的是为我们的应用程序安装所需的软件包,添加正确的用户,确保文件权限正确,最后安装和配置我们的应用程序。为了解决这个问题,以 "配置管理 "工具为代表的第一代基础架构自动化软件应运而生。Puppet 是第一个著名的配置管理工具,于 2005 年发布,发布时间早于亚马逊 EC2。紧随 Puppet 之后推出的还有 2008 年的 Chef、2011 年的 SaltStack 和 2012 年的 Ansible。
到 2009 年,世界已经准备好迎接一个新名词的到来:DevOps。时至今日,关于 DevOps 的定义仍是众说纷纭。有趣的是,DevOps 是在基础设施软件自动化的动荡早期诞生的。虽然 DevOps 有着重要的人员和文化方面的内容,但有一点在本章中非常突出:即基础设施和应用程序的自动化调配、配置和部署能力。
到 2011 年,Amazon Web Services(AWS)套件的所有服务都变得难以追踪。云比原始计算能力(亚马逊 EC2)和对象存储(亚马逊 S3)复杂得多。应用程序开始依赖于多种服务之间的交互,因此需要一些工具来帮助自动配置这些服务。亚马逊很快就满足了这一需求,并于 2011 年开始提供此类工具:AWS CloudFormation。这是我们第一次真正可以说,我们能够通过代码来描述我们的基础架构。CloudFormation 打开了新一代基础设施即代码(IaC)工具的大门,这些工具在云基础设施本身的层上运行,位于第一代配置管理工具所服务的层之下。
到 2014 年,AWS 推出了数十项服务。就在这一年,IaC 世界的另一个重要工具诞生了:HashiCorp公司的Terraform。时至今日,CloudFormation 和 Terraform 仍是使用最多的两个 IaC 工具。
IaC 和 DevOps 领域的另一个重要发展发生在 2013 年末至 2014 年初的某个时间:Docker 的发布,Docker 成为了容器技术的代名词。虽然容器已经存在多年,但 Docker 带来的巨大好处是,它将 Linux 容器和 cgroups 等技术封装成了易于使用的 API 和命令行界面(CLI)工具集,大大降低了人们的入门门槛,他们可以将自己的应用程序打包成容器,然后部署到 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access