主页 topics 基础架构即代码 什么是基础架构即代码 (IaC)?
基础架构即代码(简称 IaC)可自动部署基础架构,支持组织以更快的速度、更小的风险和更低的成本开发、部署和扩展云应用。
DevOps
隧道速度运动轻轨迹
什么是基础架构即代码 (IaC)?

基础架构即代码 (IaC) 使用高级描述性编码语言来自动完成 IT 基础架构的配置。 利用这种自动化功能,开发人员就不必每次开发、测试或部署软件应用时都手动配置和管理服务器、操作系统、数据库连接、存储和其他基础架构元素。

在当今时代,企业每天将数百个应用部署到生产环境早已是司空见惯的事。为了响应开发人员和用户的需求,企业不断地启动、拆除、扩展和缩减基础架构,这种情况下,实现基础架构自动化就显得至关重要,这样才能控制成本、降低风险,快速响应新的商业机会和竞争威胁。 IaC 便可以实现这一自动化目标。

IaC 也是一项必不可少的 DevOps 实践,对于具有竞争力的软件交付生命周期不可或缺。 IaC 让 DevOps 团队能够采用与版本源代码相同的方式快速创建和版本化基础架构,并跟踪这些版本,避免 IT 环境之间的不一致,这种不一致可能会导致部署期间出现严重问题。

Sai Vennam 在以下视频“什么是基础架构即代码?”中详细介绍了 IaC:

基础架构即代码的优势

提供传统 IT 是一个耗时且成本高昂的过程,需要专家完成硬件的物理设置、操作系统软件的安装和配置以及与中间件网络存储等的连接。

 

虚拟化云原生开发消除了物理硬件管理的问题,使开发人员能够按需配置自己的虚拟服务器容器。        但是,配置虚拟化基础架构还是无法让开发人员全身心投入到代码编写上来,他们仍然需要为每个新部署重复配置工作,并且没有一种简单的方法来跟踪环境变化和防止影响部署的不一致。

借助基础架构即代码 (IaC),开发人员终于能够通过执行脚本有效地“订购”全面记录的版本化基础架构。 产生的优势正如您所想到的那样:

  • 更快地投入生产/上市:IaC 自动化极大地加快了为开发、测试和生产配置基础架构(以及根据需要扩展或拆除生产基础架构)的过程。 因为 IaC 对所有内容进行编码和记录,甚至可以自动配置原有基础架构,而这原本可能会受到耗时流程(如拉取工作单)的制约。

  • 提高一致性 — 减少“配置漂移”: 临时配置更改和更新导致开发、测试和部署环境不匹配时,就会发生配置漂移。 开发需要满足严格监管合规标准的应用和服务时,配置漂移可能会导致部署问题、安全漏洞和其他风险。 IaC 通过每次配置相同的环境来防止漂移。

  • 开发更快速、更高效: 通过简化配置和确保基础架构一致性,IaC 可以自信地加速软件交付生命周期的每个阶段。 开发人员可以快速配置沙箱和持续集成/持续部署 (CI/CD) 环境。 QA 可以快速提供全保真测试环境。 运营部门可以为安全和用户验收测试快速配置基础架构。 当代码通过测试时,可以一步部署应用以及运行应用所依赖的生产基础架构。

  • 防止人才流失: 不具备 IaC 时,为了最大限度地提高效率,组织通常会委派一些熟练的工程师或 IT 人员来完成配置。 如果其中一位专家离开组织,其他人有时也会离开,这就导致需要重建流程。 IaC 确保组织内部始终保留有相关配置能力。

  • 降低成本并提高投资回报率:除了显著减少配置和扩展基础架构所需的时间、精力和专业技能外,IaC 还让组织能够最大限度地利用云计算基于消费的成本结构。   它还能减少开发人员在管道方面花费的时间,将更多的时间用于开发创新的关键任务软件解决方案。
不可变基础架构与可变基础架构

在使用基础架构即代码 (IaC) 自动执行基础架构以及选择 IaC 解决方案时,需要就创建可变还是不可变基础架构做出明确的决策,这一点很重要。  

可变基础架构在完成最初配置后可以修改或更新。  可变基础架构使开发团队能够灵活地定制临时服务器,例如,更紧密地适应开发或应用要求,或者响应紧急安全问题。 但这也削弱了 IaC 的一项关键优势,即在部署之间或版本内保持一致性的能力,同时也使基础架构版本跟踪变得更加困难。

由于这些原因,大多数 IaC 被实现为不可变基础架构,即一旦完成最初配置就无法修改。 如果需要更改不可变基础架构,则必须替换为新的基础架构。 因为新的基础架构可以在云上快速启动,特别是使用 IaC,所以不可变基础架构在可行性和实用性方面更加名副其实。

不可变基础架构将 IaC 带到下一个逻辑步骤,从本质上加强了 IaC,进一步确保其优势得以实现。 这几乎消除了配置漂移,并使保持测试和部署环境之间的一致性变得更加容易。 不可变基础架构还可以更轻松地维护和跟踪基础架构版本,并在必要时自信地回滚到任何版本。

声明式方法与命令式方法

在选择 IaC 解决方案时,了解基础架构自动化的声明式方法或命令式方法之间的区别也很重要。

    

在大多数组织中,声明式方法(也称为功能方法)最适用。   在声明式方法中,由组织来指定要配置的基础架构的最终状态,IaC 软件会处理其余的工作,启动虚拟机 (VM) 或容器、安装和配置必要的软件、解决系统和软件的相互依赖关系以及管理版本控制。 声明式方法的主要缺点在于通常需要熟练的管理员来设置和管理,而这些管理员一般专长于他们偏爱的解决方案。

命令式方法(也称为过程式方法)中,解决方案可帮助准备自动化脚本,这些脚本可以一次为基础架构配置一个特定步骤。   虽然随着您的扩展而可能需要更多的管理工作,但现有管理人员可以更容易理解并且可以利用您已有的配置脚本。

选择声明式还是命令式方法,类似于要使用 GPS 还是遵循逐向指令。 采用 GPS,您只需要输入地址,剩下的工作由 GPS 来完成,它会为您绘制最快的路线并避开交通拥堵,但您可能需要专家来告诉你为什么会做出这样的选择。 逐向指令是基于个人经验;提供者知道路线以及选择该路线的原因,但如果您遇到障碍或想要优化路线,则必须寻求帮助或自己完成工作。

基础架构即代码 | IBM

虽然有许多开源 IaC 工具可用,但最常用的工具就是 Ansible 和 Terraform:

什么是 Ansible?

Ansible(链接位于 ibm.com 外部)是一个由 Red Hat 赞助的开源社区项目,旨在帮助组织实现配置、配置管理和应用部署的自动化。 Ansible 是一种声明式自动化工具,可用于创建“剧本”(用 YAML 配置语言编写)来指定基础架构所需的状态,然后进行配置。 Ansible 是自动配置 Docker 容器和 Kubernetes 部署的流行选择。

什么是 Terraform?

Terraform 是另一种声明式配置和基础架构编排工具,可让工程师自动配置其企业基于云的基础架构和本地基础架构的所有方面。

Terraform 与所有领先的云提供商合作,让你可以并行地跨多个提供商自动构建资源,无论物理服务器、DNS 服务器或数据库位于何处。 Terraform 还可以配置以任何语言编写的应用。

与 Ansible 不同的是,Terraform 不提供配置管理功能,但它与配置管理工具(例如 Cloud Formation )协同工作,可在配置文件描述的状态下自动配置基础架构,并在必要时自动更改更新配置以响应配置更改。

要更深入地了解如何选择 IaC 工具,请参阅“基础架构即代码:Chef、Ansible、Puppet 还是 Terraform?

相关解决方案
IBM Cloud® Schematics

使用基础架构即代码来配置和自动化资源,以便您能够专注于关键应用。

探索 IBM Cloud® Schematics
IBM DevOps 解决方案

借助功能强大的 DevOps 软件,在多种设备、环境和云中构建、部署和管理高度安全的云原生应用。

探索 IBM DevOps 解决方案
资源 什么是 DevOps?

DevOps 通过整合并自动执行软件开发和 IT 运营团队的工作,以更快速度交付更高质量的软件。

什么是云计算?

借助云计算,您可通过互联网“插入”基础架构并使用计算资源,而无需在本地安装和维护这些资源。

基础架构即代码:Chef、Ansible、Puppet 还是 Terraform?

了解如何选择基础架构即代码工具。

采取下一步行动

IBM Cloud Schematics 基于 Terraform 而构建,是一种用于自动化基础架构管理的简化解决方案,可以帮助组织通过一致的配置和编排来提高应用性能。

了解有关 IBM Cloud® Schematics 的更多信息