主页

topics

基础设施即代码

什么是基础架构即代码?
黑色和蓝色背景
基础架构即代码

基础结构即代码 (IaC) 可自动预配基础设施,让您的组织能够以更快的速度、更低的风险和更低的成本开发、部署和扩展云应用程序。

什么是基础架构即代码 (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 完成,也就是为您绘制最快的路线并避开交通拥堵,但您可能需要专家来告诉你为什么会做出这样的选择。 逐向指令是基于个人经验;提供者知道路线以及选择该路线的原因,但如果您遇到障碍或想要优化路线,则必须寻求帮助或自己完成工作。

基础设施即代码的工具

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

什么是 Ansible?

Ansible (链接指向 ibm.com 外部)是一个由 Red Hat 赞助的开源社区项目,旨在帮助组织实现预配、配置管理和应用程序部署的自动化。 Ansible 是一种声明式自动化工具,可让你创建“剧本”(用 YAML 配置语言编写)以指定基础设施所需的状态,然后为您进行预配。 在自动化 Docker 容器和 Kubernetes 部署的预配时,Ansible 是很受欢迎的选择。

什么是 Terraform?

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

Terraform 与所有领先的云提供商合作,让你可以并行地跨多个提供商自动构建资源,而不管物理服务器、DNS 服务器或数据库驻留在何处。 Terraform 还可以预配以任何语言编写的应用程序。

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

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

基础设施即代码与 IBM Cloud

IBM 的 IaC 功能具有可定制和可共享的模板,可以为实现应用程序现代化奠定基础,无论您处于向云转型的哪个阶段。

采取下一步行动:

  • IBM Cloud Schematics 是基于 Terraform 构建,这是一种用于自动化基础设施管理的简化解决方案,可以帮助组织通过一致的供应和编排来提高应用程序性能。
  • 了解 IaC 如何补充 IBM DevOps 功能。

立即开始通过 IBM Cloud 帐户使用该产品。

相关解决方案
构建、部署和管理应用。

信心十足地在任何云中安全地构建和管理应用并使之现代化

探索构建、现代化和管理应用程序
IBM Cloud 上的 DevOps 服务

借助 DevOps 最佳实践,跨多个设备、环境和云构建、部署和管理高度安全的云原生应用程序

探索 IBM Cloud 上的 DevOps 服务