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

复制 URL

基础架构即代码(IaC)是通过代码(而非手动流程)来管理和置备基础架构的方法。

利用 IaC,我们可以创建包含基础架构规范的配置文件,从而便于编辑和分发配置。此外,它还可确保每次置备的环境都完全相同。通过将配置规范编写成代码并形成文档,IaC 有助于实现配置管理,并避免发生未记录的临时配置更改。

版本控制与自动化

版本控制是 IaC 的一个重要组成部分,配置文件应该像其他软件源代码文件一样纳入源代码管理。以基础架构即代码方式部署还意味着,您可以将基础架构划分为若干模块化组件,再通过自动化以不同的方式进行组合。

借助 IaC 实现基础架构置备的自动化,意味着开发人员无需再在每次开发或部署应用时手动置备和管理服务器、操作系统、存储及其他基础架构组件。将基础架构的配置和部署以代码形式定义下来,可供置备时有模板可循。虽然这些操作仍可手动完成,但红帽® Ansible® 自动化平台等自动化工具可以为您代劳。

IaC 有两种实现方法:

声明式 IaC 方法会定义系统的预期状态,包括所需资源及其应具备的属性,然后由 IaC 工具为您进行相关配置。 

声明式方法还会记录系统对象的当前状态列表,以便在移除基础架构时更易于管理。

命令式 IaC 方法则会定义实现预期配置所需的具体命令,而且这些命令需要按正确的顺序执行。 

许多 IaC 工具都使用声明式方法,能够自动置备所需的基础架构。如果您更改了预期状态,声明式 IaC 工具会自动应用这些变更;而使用命令式工具时,则需要您自行决定如何应用这些更改。

IaC 工具可以同时支持这两种方法,但通常会更倾向于采用其中一种。

阅读基础架构即代码指南

置备基础架构历来是一个耗时且成本高昂的手动过程。随着虚拟化容器云计算的普及,基础架构管理已逐渐脱离数据中心的物理硬件。这种转变带来了诸多益处,但也引发了新的挑战。

在云计算环境下,基础架构组件的数量不断增加,每天都有更多应用发布到生产环境中,而且基础架构本身也要频繁地启动、扩展和移除。如果没有相应的 IaC 实践,那么管理现今这样大规模的基础架构会变得越来越困难。

IaC 可以帮助您管理 IT 基础架构需求,同时提高一致性并减少错误和手动配置。

采用基础架构即代码的优势:

  • 降低成本
  • 加快部署速度
  • 减少错误
  • 提高基础架构的一致性
  • 消除配置偏移

将 IaC 策略扩展到 Day 2 运维

在 IaC 策略基础上,企业组织开始使用这些实践在运维生命周期的每个阶段实现 IT 流程的自动化。 

正如 IaC 将基础架构的构建、置备和部署标准化一样,IT 团队也可以采用运维即代码(OaC)将系统部署之后的管理和维护任务编写成代码。此外,还可以将这种方法扩展到策略即代码(PaC),以自动执行应用和解决方案的治理、风险和合规性流程。

利用从实现 IaC 自动化中获得的经验,IT 团队可以使用相同的方法和工具,在 Day 2 运维中采取更高效、适应性更强的方法。

将 IaC 扩展到 OaC 和 PaC

服务器自动化和配置管理工具可加速并优化 IaC 的采用。此外,也有专为 IaC 设计的解决方案。 

常见的 IaC 优化工具和技术包括:

使用自动化工具来实施 IaC,还有助于构建更高效、更具生产力的工作流,简化 NetOps 方法的采用。Ansible 自动化平台之类的综合性平台,能够在企业环境中置备操作系统和网络设备、部署应用以及管理配置。

了解一些 Ansible 基础知识

基础架构即代码已成为现代 IT 运维和 DevOps 的基石,在各个行业拥有广泛的实际应用。IaC 的主要用例和示例包括:

  • 自动化 Web 应用部署:IaC 最常见且影响深远的用例之一,就是定义和置备 Web 应用所需的全部组件,包括虚拟机、数据库、负载均衡器、防火墙和网络配置。
  • 云部署:您可以利用 IaC 来部署和管理单云或多云的完整云环境。借助 IaC,您可以对云基础架构进行编码,以确保资源分配精准、安全设置严谨且符合合规要求。这样您就可以轻松扩展云运营,同时严格遵守企业组织的标准。
  • 持续集成/持续交付(CI/CD)管道:IaC 是软件开发生命周期自动化不可或缺的一部分。在 IaC 方法中,基础架构的变更将如同应用代码一样进行版本控制、测试,并作为 CI/CD 管道的一部分自动部署。开发人员可以在与生产环境一致的环境中测试代码,从而实现更快速、更可靠的部署。
  • 灾难恢复和高可用性IaC 显著增强了灾难恢复能力。当我们将基础架构定义为代码并存放在版本控制系统中时,一旦发生灾难性故障,我们就能在不同的区域或云中快速一致地重新创建整个环境。这可以缩短恢复时间目标(RTO)和停机时间,确保业务连续性。
  • 混合云和多云环境:混合云多云环境中,IaC 以统一的方式管理不同的基础架构。借助 IaC 工具,您可以在不同环境中一致地定义和管理资源,这不仅带来了灵活性,还能降低成本。
  • 安全防护与合规自动化:IaC 将安全防护配置与合规性规则直接嵌入到基础架构定义中。因此,部署过程中会自动应用安全防护策略,如防火墙规则、身份访问和管理(IAM)角色以及加密设置,而无需依赖手动配置。 

IaC 是实施 DevOps 实践和持续集成/持续交付(CI/CD)的一个重要组成部分。IaC 减少了开发人员的置备工作,他们只需执行脚本即可部署基础架构。 如此一来,基础架构就不会拖慢应用部署的进度,系统管理员也无需再处理耗时的手动流程。 

CI/CD 离不开贯穿应用整个生命周期(从集成和测试阶段,到交付和部署)的持续自动化与实时监控。 要实现环境自动化,一致性是关键前提。如果开发团队与运维团队分别以不同方式部署应用或配置环境,自动化的应用部署将无法实现。

通过 DevOps 方法来协调开发和运维团队,可以减少错误、手动部署及不一致的情况。 IaC 有助于促进开发与运维团队的协同,因为两个团队可以基于同一应用部署描述开展工作,以支持 DevOps 方法。

为充分发挥 IaC 的作用,应对所有环境(包括生产环境)采用相同的部署流程。IaC 每次都会生成一致的环境,因此无需维护各自独立的部署环境。避免无法自动重现的独特配置,才能确保生产环境始终一致。

DevOps 最佳实践也同样适用于 IaC 中的基础架构。在软件开发期间,基础架构可采用与应用相同的 CI/CD 管道,因此可以对基础架构代码应用相同的测试和版本控制。

与大多数涉及文化变革的技术采用过程一样,成功实施 IaC 需要分阶段推进并设定明确目标。先从非关键组件或环境小范围尝试,让团队积累经验、建立信心,再逐步处理更复杂的系统。明确业务目标,例如降低成本或加快部署速度,便于团队在实施过程中衡量成效。 

IaC 方法的最佳实践

采用 IaC 方法的一项基本最佳实践是,将基础架构视为应用代码来对待。这意味着要遵循以下最佳实践:

  • 对所有内容使用版本控制。这样可以支持协作开发、跟踪变更,并便于回滚至之前的稳定状态。在版本控制中,最好采用分支策略(如功能分支)、同行代码审查(通过拉取请求进行)以及撰写描述性的提交信息。
  • 实现基础架构模块化与可复用性。将基础架构拆分为最小的可复用组件。这有助于减少重复、提升可维护性,并便于在不同项目和环境中理解与管理。
  • 自动执行测试。将所有 IaC 融入对应用代码进行的常规测试中,并集成至 CI/CD 管道,以确保基础架构的变更在部署前经过验证。
  • 减少配置偏移。尽可能构建“不可变的基础架构”:不对现有服务器进行更改,而是使用更新后的配置来置备新服务器,并淘汰旧服务器。这可以显著减少配置偏移,并简化回滚流程。
  • 为 IaC 变更定义明确的角色、职责与审批工作流。通过实施 PaC 来自动执行应用和解决方案的治理、风险和合规流程。

采用 IaC 面临的挑战

采用 IaC 可能会遇到一些常见及独特的挑战:

  • 实现手动操作自动化可能比较复杂。对于习惯于手动操作的团队来说,掌握 IaC 工具和概念时可能需要经历一个学习适应期。这可能引发抵触情绪,进而导致采用速度减缓。从手动控制台交互转向代码操作,需要巨大的思维转变。
  • 安全漏洞。硬编码的敏感信息、模板中过度宽松的 IAM 角色或基础镜像中的漏洞,都可能在基础架构中广泛传播,带来安全风险。
  • 缺乏标准化。如果缺乏清晰的指导方针,团队可能会以不一致的方式实施 IaC,导致实践割裂、代码重复、维护困难。这通常表现为命名规则混乱、模块结构不统一或部署模式各异。
  • 文化阻力。采用像 IaC 这样广泛的策略,要求企业组织打破固有习惯,培养“代码优先”的思维方式。这需要领导层的坚定支持、持续沟通其价值,并营造鼓励尝试与学习的文化。
  • 调试复杂的管道。尽管 IaC 能减少错误,但一旦发生错误,调试的难度往往高于手动过程,尤其是对 IaC 经验不足的团队而言。
  • 管理传统基础架构。将 IaC 与现有传统基础架构集成,通常需要逆向工程或逐步重构,过程复杂且耗时。

红帽 Ansible 自动化平台客户利用自动化来支持 IaC 策略,从而提高了 IT 运营效率。世界各地的企业都受益于红帽合作伙伴关系和自动化社区,使用 Ansible 自动化平台来提高弹性、减少手动工作量并拥抱自动化文化。

道明银行

道明银行为北美地区超过 2800 万客户提供银行服务,该行亟需一套现代化、可扩展的网络基础架构,既能快速响应业务变化,又要保障服务可靠稳定。  为此,道明银行全面采用了 Ansible 自动化平台实现网络管理自动化。依托统一的自动化运维模式,银行在不影响系统稳定性与安全性的前提下,将技术置备、版本升级的耗时从数月缩短至数日。这也让网络团队和工程师摆脱了重复性的工作,使他们得以专注于问题解决与技术创新。

阅读成功案例

Glen Raven

高性能面料领域的市场领导者 Glen Raven 实施了红帽 Ansible 自动化平台,以优化此前需手动处理的流程,例如基础架构管理、修补和证书自动化。随后,Glen Raven 将部署范围扩展至事件驱动的 Ansible(Ansible 自动化平台的一部分),以在基于云的服务管理应用与内部自动化控制器之间建立安全连接。这使得 Glen Raven 能够通过既有的消息传递解决方案来对事件做出响应,而无需暴露其自动化控制平面。如今,新环境为企业提供了一个平台,既可支持无数用例,又能降低风险敞口、减少资源需求并缩短业务停机时间。

阅读案例研究页面当前以 English 显示(暂无 zh 选项)

通过制定企业级自动化方案,您不仅能让 IT 流程实现自动化,还能让技术、团队和企业组织实现全面自动化。 

红帽 Ansible 自动化平台中包含了实现企业级自动化所需的各种工具,包括 playbook、可视化信息面板、事件驱动的解决方案和分析功能。它还使用 Webhook 来自动执行 IaC 工作流并支持 GitOps 实践。

YAML 编写的 Ansible Playbook 描述了系统的预期状态,其通常保留在源代码控制中。不管系统当前状态如何,Ansible 自动化平台都可使其进入预期状态。 

Ansible 自动化平台使您的安装、升级和日常管理具有可重复性和可靠性。

订阅 Ansible 自动化平台后,您就可以更快速地部署新的应用和服务,更有效地管理 IT 基础架构,同时还可以提高应用开发效率。 此外,您还能够获得来自我们强大合作伙伴生态系统的认证内容、托管管理服务,以及生命周期技术支持,从而让您的团队能够在整个企业组织范围内创建、管理和扩展自动化。

进一步了解 Ansible 自动化平台

 

红帽 Ansible 自动化平台的内置功能提供了一个“开箱即用”的加速器。我们有很多供应商和合作伙伴都用它来编写脚本以安装、配置和维护其技术,它已成了我们公认的标准工具。

Jesse Amerson

IT director, Ulta Beauty

阅读完整案例

博客

IT management and automation

Catch up on the end-to-end platform that brings IT automation to everyone

了解红帽 Ansible 自动化平台 | 交互式实验室

借助分步指导的红帽交互式实验室,按照自己的节奏了解如何使用红帽 Ansible 自动化平台。

扩展阅读

如何采用自动化即代码:将基础架构即代码扩展到策略即代码

基于基础架构即代码(IaC)战略,企业组织现在可以将这些实践扩展到运维即代码(OaC)和策略即代码(PaC),以便在整个运维生命周期内自动执行 IT 系统的管理、维护和治理。

从可观测性到 AIOps 自动化的演进之路

了解企业组织如何依托可观测性、AIOps 和 IT 自动化,高效地交付可靠的服务与应用。

AI 和自动化如何助力减少 ITSM 中的手动工作负载

了解自动化工作流和包含 AI 建议的丰富工单信息如何助力节省时间,并减少 ServiceNow 等 IT 服务管理应用中的错误。

自动化与管理 相关资源

特色产品

相关文章