Ansible、Ansible Galaxy 和 Ansible Tower 之间有什么区别?

Ansible, Ansible Galaxy 与 Ansible Tower:深入剖析

Ansible 是一种开源的配置管理工具,同时也是一个强大的 IT 自动化平台。它主要用于自动化软件配置、管理和应用程序部署,极大地提高了工作效率。

Ansible 的独特之处在于它与其他配置管理工具,如 Chef、CFEngine、Salt 和 Puppet 的运行机制有所不同,这使得它在自动化领域中脱颖而出。

为了更方便地管理 Ansible,Ansible Tower 应运而生,它提供了一个基于 Web 的用户界面。Ansible 用户需要一个直观且易于操作的界面,以便能够快速部署和监控配置。Ansible Tower 正是针对这一需求而设计的。

每种工具和框架都有其独特的功能和特点。本文将深入探讨 Ansible、Ansible Galaxy 和 Ansible Tower 之间的差异,帮助您更好地理解它们各自的作用。

Ansible 简介

Ansible 是一款用于配置管理的开源工具,它可以自动化软件部署和配置管理。通过 Ansible,您可以从一台服务器集中控制和配置多台机器。

Ansible 采用基于推送的系统,将配置从主机“推送”到所有目标节点。配置信息使用 YAML 语言编写,这种语言易于理解,方便服务器管理员创建。Ansible 通过 SSH 协议工作,并使用 OpenSSH 作为传输层。

所有的 Ansible 配置都存储在一组称为 playbook 的 YAML 文件中。Playbook 包含多个任务(或步骤),这些任务使用模块来配置节点。Playbook 是编写配置的地方,其中所有任务将按顺序执行,并且支持同步和异步执行。

上图展示了几台主机,这些主机用于执行您创建的所有配置。Ansible 的优势在于其简单、强大和高效的特点。

Ansible 的优点:

  • 免费且开源
  • 易于上手,安装过程简单
  • 功能强大,可以同时配置数千台机器
  • 灵活,适用于多种不同的环境
  • 无代理,不依赖于代理节点
  • 高效,无需额外软件即可运行

Ansible 的缺点:

  • 安装可能具有挑战性
  • 不支持在 Windows 系统上运行
  • 向后兼容性有时会存在问题

Ansible Galaxy 简介

Ansible Galaxy 是一个允许用户共享和获取角色的平台。它鼓励在服务器配置中使用可复用的角色,这些角色在项目中经常被使用。

Ansible Galaxy 本质上是一个公开的 Ansible 角色描述存储库。每个角色都包含一个 README 文件,其中提供了关于角色使用和变量的信息。Ansible Galaxy 拥有大量不断发展和壮大的角色库。通过使用角色,您可以将复杂的 playbook 分解为更结构化的部分,并且可以根据需要修改和复用这些角色。

Ansible Galaxy 角色结构:

  • README.md: 角色的自述文件,包含角色输入参数的所有详细信息和示例 YAML 代码。
  • tasks: 所有任务都注册在这个目录中,角色的入口点是 main.yml 文件,执行从此开始。此文件可以包含其他文件。
  • handlers: 包含可用于该角色或任何其他角色的处理程序。
  • defaults: 角色的默认变量。
  • vars: 比角色默认值更重要的变量。
  • files: 可以使用角色部署的文件。
  • templates: 此部分包含可以通过角色使用的模板。
  • meta: 元数据用于定义角色,此文件还包含任何角色依赖项。
  • tests: 用于执行 CI 测试。
  • library: 在角色中嵌入模块或插件,并非由 init 命令创建。您还可以在此文件夹中使用 Python 创建自定义模块,并在任务中使用它。

Ansible Galaxy 是一种创建和管理角色的工具。Ansible 的新版本不断涌现,并伴随着相应的变化。Ansible 2.2.8 版本引入了集合的概念。Ansible 内容以集合的形式分发,用于打包和分发模块、playbook 和插件。

Ansible Galaxy 的优点:

  • 集中定位、复用和共享与 Ansible 相关的内容
  • 轻松下载可复用的角色来安装应用程序
  • 提高部署速度

Ansible Galaxy 的缺点:

  • 由社区驱动,因此无法保证模块的可用性
  • 许多 Ansible Galaxy 角色的文档不够完善
  • 大多数 Ansible Galaxy 角色不具备幂等性

Ansible Tower 介绍

Ansible Tower 是 Ansible 的 Web 用户界面,它为多种类型的 IT 团队提供了基于 Web 的解决方案。

可以将 Ansible Tower 比作汽车的仪表盘,它显示了汽车的各项信息,如速度、油位、剩余油量等。Ansible Tower 类似于仪表盘,而 Ansible 则像是引擎。

Ansible Tower 允许用户通过图形用户界面远程执行任务。 Ansible 任务通过 playbook 执行,这些 playbook 可以使用 Ansible CLI 执行。 然而,Ansible Tower 允许通过 GUI 管理和执行 playbook。 您可以使用预先存在的 playbook,或者创建自己的 playbook。 Ansible Tower 还提供集成通知,可以在任务完成或失败时通知指定的团队。这种跨团队沟通对于任何组织都至关重要。

Ansible Tower 还提供基于角色的访问控制(RBAC),允许您验证哪些用户有权执行任务,从而确保只有授权用户才能在 Ansible Tower 上执行操作。这通常是为了遵守行业安全法规。此外,RBAC 还提供审计日志,详细记录了任何时间谁负责执行哪些任务,这提供了额外的安全保障,这是单独使用 Ansible 难以实现的。

Ansible Tower 允许在不同的应用程序中远程执行代码。例如,如果虚拟机处于错误状态需要重启,Ansible Tower 可以轻松且安全地执行此操作。远程安装软件可以用于快速修复安全漏洞或重置密码。Ansible Tower 是您通过 Ansible 部署的所有网络基础设施和虚拟机的一站式管理中心。

与 Ansible 不同,Ansible Tower 不是免费的。它有两个版本:标准版和高级版。选择哪个版本取决于您和您公司的 IT 需求。标准版适用于大多数 IT 操作,而高级版专为关键的 DevOps 任务设计。要获取准确的定价信息,您需要联系红帽公司。标准版 100 个节点的年度费用约为 10,000 美元,而相同节点数量的高级版每年的费用约为 14,000 美元。

Ansible Tower 的优点:

  • 布局简单
  • 帮助构建用于工作流管理的 CI/CD 管道
  • 允许安排任务并通知错误
  • 图形化库存管理
  • 易于设置

Ansible Tower 的缺点:

  • 价格昂贵
  • 基于订阅
  • 合并冲突解决不明确
  • 调试复杂

Ansible vs Ansible Galaxy vs Ansible Tower

Ansible 可作为 IT 自动化工具,用于部署软件、配置系统,以及协调复杂的 IT 任务,例如持续部署或零停机汇总更新。Ansible 的主要目标是简单易用。

另一方面,Ansible Tower 被认为是“适用于 Mac 和 Windows 的最强大的 Git 客户端”,它可以在更高效的图形用户界面中使用 Git 的所有强大功能。Ansible Galaxy 用于存储 Ansible 角色,类似于 Python 的 PyPI 或 Java 的 Maven。

没有 Ansible 就无法使用 Ansible Tower,Ansible Tower 可以与 Ansible Galaxy 一起使用。Ansible 是驱动基础设施管理和部署的引擎。 Ansible Tower 让我们可以查看内部运作,并允许您查看和控制组织基础设施的安全合规性。

Ansible Tower 可以为您的 Ansible 部署提供 RBAC。如果您正在寻找不擅长编码的专业人员来审查您的基础设施,Ansible Tower 也是不错的选择。

Ansible 与 Ansible Tower 与 Ansible Galaxy 的比较:

Ansible Ansible Tower Ansible Galaxy
功能 开源配置管理工具 Ansible 的用户界面 角色和集合的存储库
执行方式 通过 CLI 执行 playbook 通过 GUI 执行 playbook 使用 CLI 运行 ansible-galaxy
初始版本 2012 年 2015 年 2016 年
费用 免费 起价每年 5000 美元,100 个节点 免费
优势 非常简单易于设置和使用 可以查看您的整个 Ansible 环境 它可以在不同的 playbook 中复用代码块

结论

本文深入探讨了 Ansible、Ansible Tower 和 Ansible Galaxy,以及它们之间的区别。组织在考虑 Ansible Tower 时应仔细评估自身的需求,因为它成本较高。总而言之,Ansible 是一款适用于任何类 Linux 环境的优秀配置管理工具。您可能还会对可以使用 Ansible 自动化的系统管理任务感兴趣。