基础设施即代码简介
基础设施即代码(IaC)是通过代码而非手动流程来管理和置备基础设施的方法。
利用 IaC 我们可以创建包含基础设施规范的配置文件,从而便于编辑和分发配置。此外,它还可确保每次置备的环境都完全相同。通过对配置规范进行整理和记录,IaC 有助于实现配置管理,并避免发生未记录的临时配置更改。
版本控制是 IaC 的一个重要组成部分,就像其他任何软件源代码文件一样,配置文件也应该在源代码控制之下。以基础设施即代码方式部署还意味着您可以将基础架构划分为若干模块化组件,它们可通过自动化以不同的方式进行组合。
借助 IaC 实现基础架构置备的自动化,意味着开发人员无需再在每次开发或部署应用时手动置备和管理服务器、操作系统、存储及其他基础架构组件。对基础架构编码即可创建一个置备用的模板,尽管置备过程仍然可以手动完成,但也可以由自动化工具(例如红帽® Ansible® 自动化平台)为您代劳。
IaC 的声明式方法与命令式方法
IaC 有两种实施方法:声明式或命令式。
声明式方法定义了系统的预期状态,包括所需的资源以及它们应具有的属性,随后 IaC 工具会为您进行相关配置。
声明式方法还将保留系统对象的当前状态列表,因此在移除基础架构时会更便于管理。
另一方面,命令式方法则定义了实现预期配置所需的特定命令,最后需要以正确的顺序执行这些命令。
许多 IaC 工具都使用声明式方法,并会自动置备所需的基础架构。如果您更改了预期状态,则声明式 IaC 工具会为您应用这些更改。命令式工具则需要您确定该如何应用这些更改。
IaC 工具通常在两种方法中都能用,但往往更倾向于其中一种方法。
IaC 工具
服务器自动化和配置管理工具通常可以用来实现 IaC。当然,也有一些专门针对 IaC 的解决方案。
一些常见的方案如下:
- Chef
- Puppet
- 红帽 Ansible 自动化平台
- Saltstack
- Terraform
- AWS CloudFormation
Ansible 自动化平台可也用来置备操作系统和网络设备、部署应用以及管理配置。
为什么说 IaC 对于 DevOps 至关重要?
IaC 是实施 DevOps 实践和持续集成/持续交付(CI/CD)的一个重要组成部分。IaC 免除了开发人员的大部分置备工作,他们只需要执行一个脚本即可让基础架构准备就绪。
如此一来,应用部署就不必再等待基础架构,而系统管理员也不用管理耗时的手动流程。
CI/CD 离不开贯穿应用整个生命周期(从集成和测试阶段,到交付和部署)的持续自动化和持续监控。
环境要实现自动化,需要保持一致。如果开发团队以一种方式部署应用或配置环境,而运维团队以另一种方式部署和配置,则实现应用部署的自动化并不能发挥作用。
通过 DevOps 方法来协调开发和运维团队,可以减少错误、手动部署及不一致的情况。
IaC 会帮助您协调开发和运维工作,因为这两个团队可以使用有关应用部署的同一描述,以支持 DevOps 方法。
每种环境(包括生产环境)都应使用相同的部署过程。每次使用 IaC 时,它都会生成相同的环境。
此外,您也无需分别维护具有独特配置(无法自动复制)的不同部署环境,从而确保了生产环境的一致性。
DevOps 最佳实践也同样适用于 IaC 中的基础架构。在软件开发期间,基础架构可采用与应用相同的 CI/CD 管道,因此可以对基础架构代码应用相同的测试和版本控制。
选择红帽实现自动化的优势
通过制定企业级自动化方案,您不仅能让 IT 流程实现自动化,还能让技术、团队和企业实现全面自动化。
红帽® Ansible® 自动化平台包含了实现企业级自动化所需的各种工具,包括 Playbook、事件驱动的解决方案、可视化控制面板和分析功能。Ansible 自动化平台也使用 Webhook 来自动执行 IaC 工作流并支持 GitOps 实践。
Ansible Playbook 用 YAML 编写,描述了系统的理想状态,其通常保留在源代码控制中。不管系统当前状态如何,Ansible 自动化平台都可使其进入理想状态。
Ansible 自动化平台使您的安装、升级和日常管理具有可重复性和可靠性。
有了适合的自动化解决方案,您就可以更快速地部署新的应用和服务,更有效地管理 IT 基础架构,同时还可以提高应用开发效率。