主页
topics
基础设施即代码
基础架构即代码 (IaC) 使用高级描述性编码语言来自动完成 IT 基础架构的预配。 利用这种自动化,开发人员便不必每次开发、测试或部署软件应用程序时都手动预配和管理服务器、操作系统、数据库连接、存储和其他基础架构元素。
在当今时代,企业每天将数百个应用程序部署到生产环境已经是司空见惯的情况。而在基础架构不断地启动、拆除、扩展和缩减以响应开发人员和用户的需求时,对组织至关重要的是要自动化基础架构,以控制成本、降低风险并快速响应新的商业机会和竞争威胁。 而 IaC 便可以自动完成这些任务。
IaC 也是一项必不可少的 DevOps 实践,对于具有竞争力的软件交付生命周期不可或缺。 IaC 让 DevOps 团队能够以与版本源代码相同的方式快速创建和版本化基础架构,并跟踪这些版本,以避免 IT 环境之间的不一致导致部署期间出现严重问题。
Sai Vennam 在以下视频“什么是基础架构即代码?”中详细介绍了 IaC:
提供传统 IT 是一个耗时且成本高昂的过程,需要专家进行硬件的物理设置、操作系统软件的安装和配置以及与中间件、网络、存储等的连接。
虚拟化和云原生开发消除了物理硬件管理的问题,使开发人员能够按需配置自己的虚拟服务器或容器。 但是,预配虚拟化基础设施还是无法让开发人员全身心投入到代码编写上,他们仍然需要他们为每个新部署重复预配工作,并且没有提供一种简单的方法来跟踪环境变化和防止影响部署的不一致。
借助基础架构即代码 (IaC),开发人员终于能够通过执行脚本有效地“订购”全面记录的版本化基础架构。 产生的优势正如您所想到的:
在使用基础设施即代码 (IaC) 自动化基础设施以及选择 IaC 解决方案时,要做出的一个重要决定是建立可变还是不可变的基础设施。
可变基础设施是在最初配置后可以修改或更新的基础设施。 可变基础设施使开发团队能够灵活地进行临时服务器定制,例如,更紧密地适应开发或应用程序要求或响应紧急安全问题。 但是也破坏了 IaC 的一个关键优势:在部署之间或版本内保持一致性的能力,并使基础设施版本跟踪变得更加困难。
由于这些原因,大多数 IaC 被实现为不可变的基础设施,即一旦最初配置就无法修改的基础设施。 如果需要更改不可变基础设施,则必须替换为新的基础设施。 因为新的基础设施可以在云上快速启动,特别是使用 IaC,所以不可变的基础设施在可行性和实用性方面更加名副其实。
不可变基础设施将 IaC 带到下一个逻辑步骤,从本质上加强 IaC 以进一步确保其优势得以实现。 这几乎消除了配置漂移,并使保持测试和部署环境之间的一致性变得更加容易。 不可变基础设施还可以更轻松地维护和跟踪基础设施版本,并在必要时自信地回滚到任何版本。
在选择 IaC 解决方案时,了解基础设施自动化的声明式或命令式方法之间的区别也很重要。
在大多数组织中,声明式方法(也称为功能性方法)是最配套的方法。 在声明式方法中,由您来指定要预配的基础设施的最终状态,IaC 软件会处理其余的工作,启动虚拟机 (VM) 或容器、安装和配置必要的软件、解决系统和软件的相互依赖关系以及管理版本控制。 声明式方法的主要缺点在于通常需要熟练的管理员来设置和管理,而这些管理员一般专长于他们偏爱的解决方案。
在命令式方法(也称为过程式方法)中,解决方案可帮助准备自动化脚本,这些脚本可以一次为你的基础设施预配一个特定步骤。 虽然随着您的扩展而可能需要更多的管理工作,但现有管理人员可以更容易理解并且可以利用您已有的配置脚本。
选择声明式还是命令式方法类似于要使用 GPS 还是遵循逐向指令。 采用 GPS,您只需要输入地址,剩下的工作由 GPS 完成,也就是为您绘制最快的路线并避开交通拥堵,但您可能需要专家来告诉你为什么会做出这样的选择。 逐向指令是基于个人经验;提供者知道路线以及选择该路线的原因,但如果您遇到障碍或想要优化路线,则必须寻求帮助或自己完成工作。
虽然有许多开源 IaC 工具可用,但最常用的工具是 Ansible 和 Terraform:
Ansible (链接指向 ibm.com 外部)是一个由 Red Hat 赞助的开源社区项目,旨在帮助组织实现预配、配置管理和应用程序部署的自动化。 Ansible 是一种声明式自动化工具,可让你创建“剧本”(用 YAML 配置语言编写)以指定基础设施所需的状态,然后为您进行预配。 在自动化 Docker 容器和 Kubernetes 部署的预配时,Ansible 是很受欢迎的选择。
Terraform 是另一种声明式预配和基础设施编排工具,可让工程师自动预配其企业基于云的基础设施和本地基础设施的所有方面。
Terraform 与所有领先的云提供商合作,让你可以并行地跨多个提供商自动构建资源,而不管物理服务器、DNS 服务器或数据库驻留在何处。 Terraform 还可以预配以任何语言编写的应用程序。
与 Ansible 不同的是,Terraform 不提供配置管理功能,但它与配置管理工具(例如 Cloud Formation )协同工作,以在配置文件描述的状态下自动预配基础设施,并在必要时自动更改更新预配以响应配置更改
要更深入地了解如何选择 IaC 工具,请参阅“基础设施即代码:Chef、Ansible、Puppet 或 Terraform?”
IBM 的 IaC 功能具有可定制和可共享的模板,可以为实现应用程序现代化奠定基础,无论您处于向云转型的哪个阶段。
采取下一步行动:
立即开始通过 IBM Cloud 帐户使用该产品。