Ansible 是如何发挥作用的?
模块
Ansible 的工作原理是连接到节点(或主机),并将被称为“模块”的小程序推送至这些节点。节点是指您要通过 Ansible 管理的目标端点:服务器、网络设备或任何计算机。这些模块可用于完成 Ansible 中的自动化任务。这些程序被编写成系统理想状态的资源模型。然后 Ansible 会执行这些模块,并在完成后将其移除。
如果没有这些模块,您就必须靠临时命令和脚本来完成任务。Ansible 包含多个内置模块,您可以使用这些模块自动执行任务,也可以自行编写新模块。Ansible 模块可用任何能返回 JSON 的语言编写,如 Ruby、Python 或 bash。甚至可以使用 Powershell 编写 Windows 自动化模块。
无代理自动化
Ansible 采用无代理模式,这意味着它所管理的节点不需要安装任何软件。Ansible 会从清单中读取要管理的机器的有关信息。Ansible 有默认的清单文件,但您也可以自己创建清单文件,并定义想要管理的服务器。
Ansible 使用 SSH 协议连接至服务器并运行任务。Ansible 默认会使用 ssh-agent 的 SSH 密钥,并用您当前的用户名连接到远程机器。无需使用 root 用户名登录。您能以任何用户的身份登录,然后以任何用户的身份使用 su 或 sudo 命令。
连接后,Ansible 会将您的命令或 Ansible Playbook 所需的模块传输至远程计算机上进行执行。Ansible 使用人类可读的 YAML 语言模板,因此用户无需学习高级编程语言就可以对重复性任务进行编程以使其自动运行。
使用 Ansible 运行临时命令
您还可以使用 Ansible 运行临时命令,它可在一个或多个受管节点上自动执行单个任务。为此,您只需运行一个命令或直接从命令行调用一个模块。无需使用 Playbook,且临时命令不可重复使用。这种方式适合一次性任务,更频繁或更复杂的任务则需要使用 Ansible Playbook。
Ansible Playbook
Ansible Playbook 主要用来编排 IT 流程。Playbook 是一种 YAML 文件,扩展名为 .yml 或 .yaml,其中包含一个或多个 play,用来定义系统所需达到的状态。这不同于 Ansible 模块,Ansible 模块是一个独立的脚本,可以在 Ansible Playbook 中使用。
Play 由一组有序任务组成,这些任务会针对 Ansible 清单文件中选择的特定主机来执行。任务是构成每个 Play 的组成部分,它们会调用 Ansible 模块。在一个 Play 中,任务会按照其编写顺序依次执行。
当 Ansible 运行时,它可以跟踪系统的状态。如果 Ansible 扫描系统后发现系统的 Playbook 描述和实际系统状态不一致,那么 Ansible 就会对系统进行必要的更改,以匹配 Playbook。
Ansible 有一个“检查”模式,可供您在更改系统的状态之前对 Playbook 和临时命令进行验证。您可以在实际做出更改之前,先预览 Ansible 将要执行的任务。Ansible 中的处理程序则是一种特殊的机制,当某个任务执行完成,并且这个任务引起了系统状态的变化,相关的处理程序就会被触发执行,并作为 Playbook 中的最后一个 Play 只运行一次。
您可以通过变量更改 Playbook 的运行方式,进而管理系统之间的差异,例如软件包的版本或文件的路径。借助 Ansible,您可以使用单个命令在不同的系统中执行 Playbook。变量将这些系统之间的差异纳入了考量,可在 Playbook、清单、可重复使用的文件或角色中定义,也可在命令行中定义。您可以设定变量的优先级,自定义变量之间相互覆盖的顺序。
Ansible 角色是一种特殊的 Playbook,在对完成复杂编排所需的任务、变量、配置模板及其他支持文件的分组方面完全独立且可以移植。一个内容集可以包含多个角色,因此,可通过自动化中心和 Ansible Galaxy 轻松共享内容。
内容集是 Ansible 内容的一种分发格式,可以在单个捆绑包中包含 Playbook、角色、模块、插件和文档,以便创建者更轻松地共享自动化内容并使用他人创建的内容。这些内容集按照内容领域分门别类,只需很少的预备工作就能查找和组合不同的角色与模块。
Ansible 内容集的工作原理与之相同,不过,它经过了专门设计,可帮助 Ansible 自动化平台用户使用由红帽及经认证的合作伙伴提供的预构建内容来更快实施自动化。开发和测试这些内容集(包括红帽 Ansible 认证内容和 Ansible 验证内容)时均参考了合作伙伴的建议,以确保它们安全至上、稳定可靠且适合企业。
Ansible 和红帽 Ansible 自动化平台的区别是什么?
Ansible 可供免费使用、下载和修改,该项目得益于数千名贡献者的经验和智慧。Ansible 的社区发行版包含一套强大的命令行工具,大多数已安装 Python 的操作系统都支持这些工具,其中包括红帽企业 Linux®、Debian、Ubuntu、MacOS、FreeBSD、Microsoft Windows 等。
Ansible 自动化平台将十多个上游项目整合到一个统一且安全性得到强化的企业产品中。它建立在 Ansible 社区版的基础之上,用于创建面向跨职能团队的端到端自动化体验,同时为自动化开发人员、工程师和运维团队提供即插即用的体验。
希望详细了解 Ansible 和红帽 Ansible 自动化平台之间的区别?
参加 Ansible 培训
Ansible 基础知识:自动化技术概述
本系列在线点播视频重点介绍如何使用 Ansible 在云环境、虚拟环境和物理环境中实现 Ansible 自动化和配置管理,以及置备、部署和管理计算基础架构。
利用 Ansible 实现红帽企业 Linux 自动化
本课程将讲授如何用最新版本的红帽® Ansible 自动化平台实现 Linux® 系统管理任务的自动化。您将学习必备的关键技术,从而能使用 Ansible 自动化平台实现置备、配置、应用部署和编排的自动化。
查找学习资源
利用学习资料和工具(按所需完成的任务分类)学习如何使用 Ansible 自动化平台。这些资源可引导您完成部署选项、如何安装、如何充分利用各项功能,还提供了通过自动化应对新挑战的用例。
基于 Ansible 的生成式 AI
红帽与 IBM 携手开发了搭载 IBM watsonx Code Assistant 的红帽 Ansible Lightspeed,后者是一种生成式 AI 服务,可协助团队更高效地学习、创建并维护自动化内容。您可以使用简单的语言输入任务请求,Ansible Lightspeed 将与 IBM watsonx 基础模型交互以生成用于创建 Ansible Playbook 的代码建议。
Ansible 自动化平台的用途有哪些?
置备
您可以使用 Ansible Playbook 描述基础架构的所需状态,然后让 Ansible 自动化平台对其进行置备,以便您每次都以相同的方式置备相同的环境。这可用于构建 IT 环境的所有基础架构,从在物理、云或虚拟环境中创建新实例,到增加新服务、应用、计算主机或其他资源等操作均可在单个工作流中完成。
配置管理
借助配置管理的自动化,您可以更快地更改和部署,最大限度地减少人为错误,并使系统管理具有可预测性和可扩展性。使计算机系统、服务器和软件保持在所需的一致状态可降低安全漏洞、服务降级甚至停机的风险。而且 IT 团队能够减少手动应用补丁和更新的时间,将更多时间用在影响更大的项目上。
应用部署
借助应用部署的自动化,您可以通过协调的流程在测试环境和生产环境之间移动软件。这可加快软件交付周期,还可提高应用在生产环境中的可靠性。它是支持 DevOps 实践及管理 CI/CD 管道的重要组成部分。
安全防护自动化
安全防护自动化将安全流程、应用和基础架构集成到了单个工作流中。它有助于提高安全防护运维(SecOps)的效率,同时减少导致安全漏洞及其他威胁的不一致和错误。安全防护团队可以利用 Ansible 自动化平台来配置一系列能够共享清单、Playbook 或权限的作业,以实现检查或修复任务的完全自动化。
编排
自动执行单个任务的优势有限,这就是为何能通过 Ansible 自动化平台等自动化解决方案轻松设置并实现涉及多个步骤的工作流的自动化,这些步骤在多个不同的系统(如基础架构、网络设备和安全防护工具)之间协调。编排还可以改善不同 IT 团队之间的沟通。
通过自动化即代码加速您的 IT
Ansible 自动化平台通常用于自动化基础架构即代码 (IaC) 任务,例如构建、配置和部署基础架构,但也可用于自动化整个运营生命周期的流程。通过包含事件驱动功能的统一自动化平台,企业组织现在可以将 IaC 实践扩展到“Ops as Code”和“Policy as Code”。
为什么选择红帽实现自动化?
红帽 Ansible 自动化平台中包含实现企业级自动化所需的所有工具,其中包括事件驱动型解决方案、Playbook 和分析功能。它允许您通过可视化控制面板、基于角色的访问控制以及旨在降低运维复杂性的其他功能来集中管理并控制您的 IT 基础架构。
借助红帽订阅,您可以获得经认证的内容、可靠的合作伙伴生态系统、托管管理服务的访问权限,以及生命周期技术支持,让您的团队能够在整个企业中创建、管理和扩展自动化。红帽已成功服务数千客户,积累了能提供专业洞察和指导的宝贵经验。
企业不仅需要具备轻松创建自动化的能力,而且需要能在项目和团队之间以适当的监管和控制水平来共享和重新使用自动化。借助 Ansible 自动化平台,您可以更快地部署新的应用和服务,更高效地管理 IT 基础架构,还可以提高应用开发效率。
红帽 Ansible 自动化平台的内置功能提供了一种一揽子的加速利器。我们有很多供应商和合作伙伴都用它来编写脚本以安装、配置和维护其技术,它已成了我们公认的标准工具。”