概述
红帽® Ansible® 自动化平台和 HashiCorp Terraform 都是源于开源的自动化产品,采用基础架构即代码(IaC)方法来实现 IT 环境自动化。
为您的组织评估这类解决方案不是一种简单比较,因为自动化没有所谓的“正确”方法,可供选用的自动化工具也不止一种,正如问题解决办法并不唯一。您的业务需求与同行业中另一企业的迥然不同。
基础的自动化术语
在研究自动化解决方案时,无疑会遇到不少用来描述产品关键区别和功能的术语。我们来明确几个最常见的术语,并探讨相互之间的关系,以及它们与 Ansible 和 Terraform 的关系。
编排指的是多个工作流协同执行。每个工作流执行一项或多项任务。这些编排到一起后,可以自动执行对复杂系统、应用和服务的配置与管理。这种协调通常遵循在策略中定义的预定规则。编排还可以协调多个自动化解决方案。这些解决方案反过来又执行自动化工作流。
Ansible 和 Terraform 都可以充当编排器,因为它们可以按照特定的策略依次调用多个自动化工作流。Ansible 具有内置模块,可连接和管理其他自动化工具(包括 Terraform 在内)。因此,您可以使用 Ansible 作为所有团队的顶级通用语言,在整个 IT 环境中实现标准化的自动化方法。
Ansible 和 Terraform 都可以置备(以及取消置备)IT 基础架构。Ansible 还可以置备应用和服务。
配置管理是为基础架构、应用和服务定义和维护配置的过程。
与许多其他自动化解决方案一样,Ansible 和 Terraform 都可以定义配置,并将配置应用到各种基础架构目标。不过,它们采用不同的配置管理方法。Terraform 使用一种称为声明性编程的方法,试图通过定义所需状态来保持 IT 基础架构的配置。Ansible 使用一种程序性(或命令式)编程方法,会试图通过定义达到所需状态的步骤来保持 IT 基础架构的配置。下文对每一过程进行了详细说明。
基础架构即代码(IaC)方法通过自动执行的代码来定义和置备基础架构,而不是借助手动流程来进行。通过将 IT 基础架构视为代码,企业可以自动执行管理任务,从软件开发最佳实践获益,并减少人为错误。
Ansible 和 Terraform 都属于 IaC 工具,但如前文所述,每种解决方案采用的编程方法有所不同。
声明性编程方法指的是通过编写代码来描述程序预期结果,而不是详细说明如何去做。它关注的是最终状态,而不是达成目标所需的具体命令和步骤。
Terraform 使用 Hashicorp Configuration Language(HCL)作为其自动化语言和声明性编程方法。这意味着,Terraform 为实现所需配置更改而必须执行的命令序列对最终用户来说是不可见或不知道的。
程序性或命令式编程方法指的是通过编写代码来为计算机提供完成任务所需的指令列表(分步指南)。它关注的是过程,而不是最终状态。对于其自动化语言,Ansible 采用 YAML 这一种人类可读的数据序列化语言。YAML 语法以程序化方式解释和执行;也就是说,自动化工作流是按照编写时的顺序执行的。
Ansible 既可以是声明性的,也可以是程序性的。许多模块以声明方式工作,而其他模块则更偏向于程序性编程方法。此外,Ansible 语言中的一些结构(如条件和循环)允许用户定义程序逻辑。这种混搭使您可以灵活地专注于所需做的事情,而不是严格遵循某一种范式。
配置不变性是指(基础架构或应用的)配置不可改变。例如,置备较新版本的应用需要淘汰和替换旧版本,而不是修改和更新。资源会自动销毁并重建。
Terraform 使用不可变基础架构方法,这有助于用户快速入门,因为他们可以轻松地启动资源,进行一些测试,然后将其拆除。但是,根据基础架构的大小,它可能会变得复杂且难以管理。尽管 Ansible 的设计假定配置可变性,但一些自动化工作流可以设计为采用不变性方法。
配置可变性是指(基础架构或应用的)配置可以改变。例如,可以通过更新或修改(而不是淘汰或替换)现有资源来置备较新版本的应用。
Ansible 的设计假定了配置可变性。这种方法的优势在于,自动化工作流易于理解,也便于故障排除。但在某些情景中,若不知道正确的操作顺序,可能会难以取消置备资源。
配置偏移发生于以下情形:由于手动、未经批准或不受监控的更改而导致基础架构随时间推移而发生变化,并且这些变化没有得到系统化地记录或跟踪。这些变化往往是由于紧急情况或过于复杂造成的,这些因素会阻碍员工遵循既定的流程。因此,配置偏移在大型企业中比较频繁。
IaC 方法有助于解决偏移问题,但额外的偏移管理至关重要。Ansible 可以设置用来检测偏移的 Ansible Playbook(自动化工作流),以此帮助您解决偏移问题。当检测到偏移时,它会向相关人员发送通知,由其进行所需的修改并将系统恢复到基线。
由于 Ansible 使用程序性编程方法,开发人员可以更轻松地了解自动化配置在何时何地发生改变,从而更快地排查到配置的特定部分并修复偏移。根据 IT 基础架构的复杂度,对使用声明性编程方法(如 Terraform)的自动化解决方案执行配置更改可能会更具挑战性。因此,IT 组织有时更愿意使用 Ansible 执行简单的配置更改,而不是通过 Terraform 这样的解决方案从整体上重新配置整个 IT 系统。
哪一种自动化解决方案更好?
更值得思考的问题或许是:“您的业务需要什么来解决特定的用例?”您必须评估具体的业务挑战和要求,并选择最适合自己的解决方案。一些问题比较适合采用某一种方法,另一些问题则更适合通过另一种方法来解决。有时候,组合使用解决方案才是制胜秘诀。
虽然 Terraform 和 Ansible 自动化平台都是非常流行的自动化产品,也是广受推崇的 DevOps 工具,但这两个解决方案在功能上却大相径庭。Terraform 专攻公共云基础架构置备,这是 IT 自动化领域的众多用例之一,而 Ansible 自动化平台则涉足广泛的自动化用例。Ansible 自动化平台不是单纯的自动化方法,而是提供不同的方法来解决各式各样的问题。如果客户遇到的具体问题最适合组合两种自动化解决方案来解决,Ansible 自动化平台可以与领先云提供商的其他产品集成,包括 Amazon Web Services(AWS)CloudFormation、Microsoft Azure 资源管理器和 Google Cloud Platform(GCP)Cloud Deployment Manager 以及 Helm 和 Terraform。
许多客户同时使用多个自动化解决方案。例如,在云端部署应用时,他们通常会首先使用 CloudFormation 或 Terraform 置备云基础架构,然后使用 Ansible 自动化平台执行应用和流程的持续配置。为提高此过程的效率,我们最近发布了适用于 Terraform 的红帽 Ansible 认证内容集。此内容集享有红帽官方支持,可用于在 Ansible 自动化平台执行环境中使用 Terraform 来自动管理和置备 IaC。
其他客户将 Ansible 自动化平台视为唯一选择来投入,因为他们想要实现的不仅仅是云部署用例。例如,他们可能希望实现威胁调查或事件响应等安全防护流程的自动化,以及路由器和交换机重新配置等网络流程的自动化。
这些客户想要在所有用例中实现标准化自动化方法,以最大限度提高投资回报率。
了解客户、合作伙伴和分析师对 Ansible 自动化平台的评价。
Terraform 与 Ansible:真的是对手?
面对琳琅满目的企业自动化产品,了解产品的特征和功能至关重要,而最重要的是,了解哪一款产品最能满足企业的具体需求。
红帽 Ansible 自动化平台以开源为核心,是一款经过强化且久经检验的订阅产品,可为企业提供完整的生命周期支持。它建立在 Ansible 社区的基础上,并且受益于其全球数千名贡献者的经验和智慧。Ansible 自动化平台旨在帮助企业创建、管理和扩展其自动化工作负载。它可为部署端到端自动化解决方案提供灵活、稳定且安全至上的基础,包括混合云、边缘位置、网络、安全性、基础架构和众多许多其他用例的自动化。
作为采用 IaC 方法的云基础架构置备和取消置备工具,Terraform 的表现极为出色。它是具有特定用途的专用工具。Ansible 则提供一个多用途的跨域自动化解决方案。它们都有蓬勃发展的开源社区,以及拥有完善支持服务的下游商业产品。这两种解决方案各有千秋,而当它们结合在一起时,可以很好地协同配合,为许多业务带来效率提升。简而言之,挑选自动化解决方案并不一定是“二选其一”,通常也能“两者兼得”。
IDC 报告:Ansible 自动化平台带来的商业价值
根据 IDC 的研究表明,使用 Ansible 自动化平台实现运营标准化的企业组织可显着提高 IT 运营效率、速度和可扩展性,平均每年实现价值 1481 万美元的收益,并获得 668% 的三年投资回报率。