什么是“基础架构即代码”(IaC)?

“基础架构即代码”(IaC) 是通过软件和自动化流程(而不是通过硬件和手动流程)来管理和置备基础架构的实践。它允许软件开发人员编写和执行指令以满足计算、存储和网络要求,从而比通过手动流程更快地进行置备。与用于自动执行重复性 IT 流程的基本脚本不同,“基础架构即代码”可以管理更复杂、更多样化的自适应流程。

IDC 白皮书:Network Automation: The Missing Piece in DX Strategies

VMware Aria Automation

“基础架构即代码”为何重要?

在现代云环境中,“基础架构即代码”对于确保顺畅运维越来越重要。容器和微服务的兴起意味着,现在必须为数百个小型应用(而不是少量大型应用)单独置备基础架构。“基础架构即代码”通过自动执行该置备来实现这一点。
IaC 在 DevOps 环境中也尤为重要,因为它让开发人员能够轻松访问 DevOps 所需的 IT 基础架构。通过以与应用代码和其他代码类似的方式处理基础架构和运维,企业可确保将 DevOps 最佳实践(如持续监控和版本控制)也应用于管理其基础架构的代码。

“基础架构即代码”与“平台即代码”

“基础架构即代码”和“平台即代码”(PaC) 是应用于技术体系中不同层的相似概念。正如我们所见,IaC 负责在基础架构层置备计算、存储和网络连接。相比之下,PaC 处理平台层(包括操作系统和开发工具),并允许开发人员为其应用定义和执行平台。


除了处理不同的层,IaC 和 PaC 之间的主要区别在于它们的实施方式:IaC 是通过在 Kubernetes API 上编写包装器来实施的,而 PaC 是通过编写 Kubernetes API 扩展来实施的。

“基础架构即代码”具有哪些优势?

实施“基础架构即代码”具有许多优势,包括:

  • 实施 DevOps 最佳实践:当以与任何其他代码相同的方式处理基础架构时,DevOps 最佳实践(如持续监控、版本控制和自动化测试)有助于确保轻松管理。
  • 为开发人员提供自助服务:采用 IaC,开发人员无需依赖 IT 部门来置备资源,而是能够以安全且合规的方式置备自己的基础架构。
  • 提高可扩展性和置备速度:IaC 的自动化特性允许以难以手动管理的方式扩展和缩减资源,尤其是在容器化环境中,其中微服务需要为每个服务单独置备基础架构。
  • 确保可重复性和一致性:通过使用相同的代码库置备基础架构,可以在数百或数千个应用之间实现一致性。

“基础架构即代码”的注意事项

“基础架构即代码”(IaC) 是容器化的 DevOps 企业环境中非常必要的一部分,而且几乎没有缺点。但是,它确实存在一些潜在挑战:可用的“基础架构即代码”工具阵列可能很复杂,并且可能需要对 IT 团队进行额外培训。基础架构自动化还意味着错误会在 IaC 环境中快速激增,因此版本控制和测试尤为重要。同样,尽管 IaC 通常可以防止出现配置偏差,但如果 IT 管理员在标准 IaC 模板之外更改服务器配置,它实际上会导致配置偏差,因此,务必要实施 IaC 标准并仔细记录策略。

使用“基础架构即代码”有哪些安全优势?

在安全性方面,“基础架构即代码”与任何类型的自动化一样需要注意:必须从一开始就对其进行正确设置,以避免大规模重复出现的错误造成更大的损害或出现安全问题。但是,经过仔细设置和考虑,安全的“基础架构即代码”可以显著降低人为错误的风险,并确保将安全注意事项纳入开发流程。


IaC 依赖于自动化而不是手动流程,因此它具有自动化的所有安全优势,并且可以避免与配置偏差相关的安全问题。集中管理服务器和应用可确保整个环境的一致性和安全性。更改不是手动进行的,而是必须在代码中定义,这有助于防止未经授权的更改。事实上,声明性设置可确保直接(而不是通过代码)进行的任何更改都会被自动覆盖,以支持代码中定义的状态。借助强大的版本控制,还原更改(甚至是通过代码所做的更改)也很容易。


IaC 环境也更容易审核,因为所有内容(包括服务器配置)都定义并记录在代码中,从而可以轻松将这些信息提供给外部审核人员。

相关解决方案和产品

VMware Aria Automation

基础架构自动化平台

现代网络

构建以用户及其所使用的应用为中心的现代网络

云管理

实现一致的部署、运维和优化。