这篇博文是来自电子书《从管理员到DevOps:在Azure中实现DevOps的无胡话方法》的一章。如果你想深入了解在微软Azure中成功实现DevOps所需的内容,请务必查看一下。
如果你曾经手动创建过任何一种云或虚拟基础架构,你会知道要么需要大量点击,要么需要大量输入。基础架构即代码(IaC)解决了这个问题。
要想配置任何东西,都需要记住要去哪个屏幕,或者运行哪个命令。如果你只是在尝试学习Azure,那没问题,但一旦这种玩耍变成了关乎业务关键、生产流程中时间就是金钱的事情,就必须做出改变。
一旦你的组织开始认真对待基础设施的配置和管理,你将面临许多新挑战。
你会遇到工作的不必要重复、重复的疑似错误输入、变更管理问题、配置漂移等。组织和团队越大,问题就越多。所有这些问题都可以通过一种称为基础架构即代码(IaC)的概念来消除或至少减轻。
基础架构即代码(IaC):举例说明
IaC是一个行业术语,指的是将构建基础架构组件所需的所有内容存储在代码中。这些代码通常以JSON或YAML文件的形式定义,代表了你的基础架构应该是什么样子的。
一旦所有组件在结构化文件中定义好,另一个进程就会出现,理解代码并立即开始将该文档用作构建基础设施的指令。
为了提供一个通用的、类似伪代码的示例,也许你有一个要创建的虚拟机。该虚拟机需要计算、存储和网络等资源。一个粗略的基础设施即代码(IaC)方法是在一个模板中描述虚拟机及其所有组件。
模板
在下面的代码片段中,你可以看到每个组件是如何按照层次结构进行分解的,并且关于每个组件的属性都有所定义。这个虚构的例子是在一个 JSON 文件中创建的,大多数服务都会称其为模板。
这个模板定义了虚拟机及其所有相关属性。它有一个特定的模式,模板作者遵循这个模式来定义虚拟机的外观。假设这个模板然后保存到一个名为myvm.json的文件中。
源代码控制
现在,你已经把组成虚拟机的一切都保存在一个单独的文件中。像任何优秀的 DevOps 专业人士一样,你把这个文件检入到源代码控制中。现在你有一种追踪文件更改的方式。
工具
现在文件已经创建,你需要一个工具或服务来读取该文件,理解你想构建的内容。该工具使用模板作为输入,并根据那些精确的规格构建虚拟机,没有其他交互。
不错,对吧?这还不是全部。
对抗配置漂移
现在假设您需要更改分配给该虚拟机网络接口卡的静态IP地址。您可以远程桌面连接到虚拟机并更改IP地址,但您不想这样做。为什么呢?
- 因为这样做是手动更改,会浪费时间并容易出现人为错误。
- 没有记录谁在何时更改了IP地址的审计追踪。
- 没有自动方式可以在您输错IP地址时恢复更改。
基础架构即代码(IaC)可以解决上述所有问题。只需几次按键,您就可以以一种您的经理和审计员会喜欢的方式进行更改。
打开myvm.json,更改IPAddress
属性,将更改提交到源代码控制,然后再次运行工具。完成。
该工具将足够智能,以知道需要更改什么。它不会断开网络接口卡或重新构建整个虚拟机。所有IaC工具和服务都足够智能,以理解如何进行更改。神奇!
但现在您突然意识到使用了错误的IP地址,需要恢复更改。没问题。在源代码控制中还原更改,提交,运行工具,您又回到正常状态。
但等等,这还不是全部。
持续交付的开端
当您在模板中存储基础架构并将其放入源代码控制下时,您就拥有了启动自动发布或持续交付流水线的一组要素。
请记住,您以前必须在更改模板时每次运行该工具。在自动化的流水线/工作流中,该工具会自动运行。一旦创建或更改环境的过程被自动化,只要您提交对模板的更改,基础架构就会匹配。
构建足够的模板,最终,您的整个基础架构可以用代码或作为代码表示。
结论
IaC是一种允许运维人员借鉴软件开发者经验的DevOps方法。IaC带来了许多软件开发者多年来一直在利用的优势,并将这些优势赋予了系统管理员。
Source:
https://adamtheautomator.com/infrastructure-as-code-iac/