基础架构即代码 (IaC) 可自动配置基础架构,使您的组织能够以更快的速度、更低的风险和更低的成本开发、部署和扩展云应用程序。
基础架构即代码 (IaC) 使用高级描述性编码语言来自动配置 IT 基础架构。
这种自动化消除了开发人员每次想要开发、测试或部署软件应用程序时手动配置和管理服务器、操作系统、数据库连接、存储和其他基础设施元素的需要。
在一个企业每天将数百个应用程序部署到生产环境中并不少见的时代——当基础设施不断地旋转、拆除、扩大和缩小以响应开发人员和用户的需求时——这对于组织来说至关重要自动化基础设施,以控制成本、降低风险并快速响应新的商机和竞争威胁。
IaC 使这种自动化成为可能。
IaC 也是必不可少的DevOps实践,对于具有竞争力的软件交付生命周期必不可少。
它使 DevOps 团队能够以与版本源代码相同的方式快速创建和版本基础设施并跟踪这些版本,以避免 IT 环境之间的不一致,从而在部署期间导致严重问题。
配置传统 IT 是一个耗时且成本高昂的过程,需要专家人员进行硬件的物理设置、操作系统软件的安装和配置以及与中间件、网络、存储等的连接。
虚拟化和云原生开发消除了物理硬件管理的问题,使开发人员能够按需配置自己的虚拟服务器或容器。
基础架构即代码 (IaC) 是使开发人员能够通过执行脚本有效地“订购”完整记录的版本化基础架构的最后一步。
好处正是您可以想象的:
由于它对所有内容进行了编码和记录,因此 IaC 甚至可以自动配置遗留基础设施,否则这些基础设施可能会受到耗时过程(如拉票)的控制。
在开发需要满足严格的法规遵从标准的应用程序和服务时,这可能会导致部署问题、安全漏洞和风险。
IaC 通过每次配置相同的环境来防止漂移。
开发人员可以快速配置沙箱和持续集成/持续部署(CI/CD) 环境。
QA 可以快速提供全保真测试环境。
运营部门可以快速为安全和用户接受测试提供基础设施。
当代码通过测试时,可以一步部署应用程序和运行它的生产基础设施。
如果其中一位专家离开了组织,有时会留下其他人来重建流程。IaC 确保供应智能始终保留在组织中。
它还使开发人员能够花更少的时间在管道上,而将更多的时间用于开发创新的任务关键型软件解决方案。
在使用基础架构即代码 (IaC) 自动化基础架构以及选择 IaC 解决方案时,需要做出的一个重要决定是建立 可变 基础架构还是 不可变 基础架构。
可变基础设施 是在最初配置后可以修改或更新的基础设施。
可变基础架构使开发团队能够灵活地进行临时服务器定制,例如,更紧密地适应开发或应用程序需求或响应紧急安全问题。
但是,它也破坏了 IaC 的一个关键优势——在部署之间或版本内保持一致性的能力——并且会使基础设施版本跟踪变得更加困难。
由于这些原因,大多数 IaC 被实施为 不可变的基础设施 ——一旦最初提供就无法修改的基础设施。
如果需要更改不可变的基础设施,则必须用新的基础设施替换它。
因为新的基础设施可以在云上快速启动——尤其是使用 IaC——不可变的基础设施比听起来更可行和实用。
不可变的基础设施将 IaC 带到了下一个合乎逻辑的步骤,从本质上强化了 IaC 以进一步确保它提供的好处。
这几乎消除了配置漂移,并使维护测试和部署环境之间的一致性变得更加容易。
它还可以更轻松地维护和跟踪基础架构版本,并在必要时自信地回滚到任何版本。
在 命令式 方法(也称为程序方法)中,该解决方案可帮助您准备自动化脚本,一次为您的基础设施提供一个特定步骤。
虽然随着您的扩展,这可能需要更多的工作来管理,但现有的管理人员可以更容易理解并可以利用您已经拥有的配置脚本。
使用 GPS,您输入一个地址,其余的工作由 GPS 完成,为您绘制最快的路线并避开交通——但您可能需要专家告诉您它做出选择的原因。
转弯指示基于个人经验;提供者知道路线以及他/她选择路线的原因,但如果您遇到障碍或想要优化路线,您必须寻求帮助或自己动手。
虽然有许多开源 IaC 工具可用,但最常用的工具是 Ansible 和 Terraform:
Ansible 是一个由 Red Hat 赞助的开源社区项目,旨在帮助组织自动化供应、配置管理和应用程序部署。
Ansible 是自动配置Docker容器和Kubernetes部署的流行选择。
Terraform 与所有领先的云提供商合作,让您可以并行地跨多个提供商自动构建资源,而不管物理服务器、DNS 服务器或数据库位于何处。
它还可以提供以任何语言编写的应用程序。
与 Ansible 不同,Terraform 不提供配置管理功能,但它与配置管理工具(例如 Cloud Formation)协同工作,以自动配置处于配置文件描述的状态的基础设施,并在必要时自动更改更新配置以响应到配置更改。