Ansible 架构 - 详解

445 阅读7分钟

Ansible 是 RedHat 旗下的开源配置管理工具。Ansible可以通过其幂等剧本配置服务器上的任何资源,甚至运行临时脚本。 Ansible 承担复杂或繁琐的手动任务,并通过自动化流程来编排它们。错误完成的任务本质上通常是重复性的。为什么?因为我们的大脑习惯了这个过程,感到无聊,并开始犯错误。使用 Ansible 等可编程工具创建自动化解决方案可以消除重复的手动任务。手动任务变成存储在源代码管理中的代码,因此其他人也可以查看将要完成的工作。 Chef、Puppet、Salt、CFEngine 等存在许多配置管理工具。是什么让 Ansible 如此与众不同?答案很简单。 Chef 和 Puppet 等工具使用实际的编程语言来编写 Ruby 等自动化指令。另一方面,Ansible 不使用编程语言,而是使用一种更简单的标记语言,称为 YAML。 YAML 以其简单性和人类可读的语言风格而闻名。即使您以前从未见过 YAML,IT 专业人员和 DevOps 人员也可以快速了解“代码”中发生的情况。

人们通常将配置管理视为移动文件、安装软件或创建数据库。但 Ansible 可以做更多的事情。

  1. 容器自动化:使用 Ansible 部署和管理容器
  2. 基础设施自动化:管理、创建和部署基础设施
  3. 云自动化:在包括 Azure 在内的许多云中自动化资源创建和服务管理
  4. 应用程序管理:在服务器上安装、更新和管理应用程序
  5. 软件定义网络:使用代码定义本地和云中的网络

在本博客中,您将了解 Ansible 的架构:

Ansible 由 Michael DeHaan 编写,由 Ansible 社区、Ansible Inc. 和 Red Hat Inc. 开发。根据红帽白皮书《Ansible in Depth》,Ansible 的设计目标是:

  1. 简便
  2. 持续的
  3. 安全的
  4. 高可靠性
  5. 易学习

由于 Ansible 不需要您在网络设备上安装软件,因此您可以轻松地扩展或缩小网络。 Ansible 还提供全方位的集成选项,允许您从 Git 或电子邮件等其他系统控制您的设备。使用 Ansible,您可以设置基本配置,例如主机名或 IP 地址,然后使用一些命令设置设备。 Ansible 使用 SSH 连接到设备并在命令行上运行命令。这使您可以通过几个命令轻松设置网络设备,无需安装代理,从而减少网络维护并提高网络一致性和标准化。

红帽 Ansible Engine 是一款用于配置管理的企业级开源软件应用程序,通常称为 CM。它广泛应用于金融服务、电信和政府部门。红帽 Ansible 引擎提供了一个用于库存、角色和角色、报告、仪表板和警报的中央管理控制台。红帽 Ansible Engine 是一款基于云的应用程序,也可以在本地部署。

为什么使用 Ansible?

Ansible 可用于多种用途,但最常用于自动化服务器、虚拟机和应用程序等系统的部署和配置。它可用于执行安装软件包、配置网络设置和更新系统配置等任务。它还可用于测试部署过程并确保在推出实际生产环境之前一切正常。许多公司使用 Ansible 进行基础设施部署,因为它易于设置且易于根据需要进行扩展。当您需要跨多个环境进行更改或有多个团队参与该流程时,它也很容易使用。您可以使用 Ansible 执行小型任务,例如添加新服务器或更新现有服务器,或执行较大任务,例如创建应用程序的新版本。当谈到使用 Ansible 可以做什么时,可能性是无限的!

  1. Ansible 可用于配置可通过 SSH 登录并安装了 Python。
  2. Ansible 的设计基于幂等原则。一切仅在需要时完成,并且没有任何副作用。
  3. Ansible 的工作原理是为您提供所需的机器状态的描述,然后采取必要的步骤来实现它。换句话说,Ansible 与其他配置工具的不同之处在于,它更专注于为您提供所需状态的描述,而不是执行特定任务。
  4. 不需要任何额外的知识来处理 Ansible。这是非常容易掌握的。

image.png Ansible架构

Ansible 架构很容易掌握:

image.png

从上图中,我们了解到可见性的作用:

  1. 从服务器到桌面计算机,再到网络配置和应用程序,所有内容都可以存储在公共/私有云中。
  2. 它表明它具有大型云平台的所有功能,但它还允许用户与所有模块和 API 进行通信。它还表明它有安全措施。
  3. 库存文件包含设备、组、主机变量、模板和任务。必须与清单文件一起创建剧本来描述如何处理所有设备、组、主机变量和模板。
  4. 一旦 Ansible 在 playbook 中有一个任务或一组任务要运行,它就需要知道在哪里运行这些任务。它需要主机清单。 Ansible 有一个称为“清单”的概念,它由主机列表组成,用于执行以 YAML 形式存储在文件中的操作。
  5. Ansible 中的模块允许您与 Azure 等云或 Hyper-V 等本地资源进行交互。 Ansible 模块是一个独立的、可重用的脚本,可以与 Ansible API 一起使用。它们也可以被 Ansible playbook 使用。 Ansible 模块的关键因素之一是它们是可重用的,并且不仅仅适用于一种环境。
  6. 增强型 ansible 的核心是通过组合所有缓存、日志记录目的、ansible 的功能等来创建的。
  7. 它允许创建可在多个自动化网络中使用的各种无代理框架。
  8. 单个存储库可以包含运营或 IT 基础设施网络的所有计算机。
  9. Ansible 被用来使 Linux 和 Unix 机器自动化。
  10. 它提供了端到端模块交互所需的API。

Ansible 架构的优点

以下列表包括优点。

  1. 由于 Ansible 非常简单易懂,因此非常适合初学者掌握。它的语法简单易懂,非常适合初学者理解。对于初学者来说,构建基础设施也非常有用,因为它很基础且易于理解。
  2. Ansible 基础设施安全完全依赖于 Ansible,因为所有应用程序都需要它以避免安全漏洞。
  3. 可以使用此工具来编排和控制应用程序或环境管理器框架。它非常强大且用途广泛。
  4. 所有云原生平台,包括 ONAP 编排,都是使用 ansible 完美实现的。
  5. Playbook可用于根据您的需求调用模块并配置应用程序。也就是说,它可以根据您的需求进行定制。
  6. 团队可以轻松管理应用程序从开发到部署的生命周期。
  7. 一种无代理工具,这意味着它不需要第三方供应商软件或代理。
  8. 配置需要编排的应用程序以获得 ansible 的完整帮助,因为它根据项目的需求提供资源。

结论

Ansible 是一款功能强大、安全且灵活的开源 IT 自动化和配置管理工具。它可以管理各种 IT 系统,例如服务器、桌面、网络设备和数据库。 Ansible 的灵活性和可扩展性是使其成为动态开发应用程序环境的出色解决方案的关键特性。在本文中,您了解了如何使用 Ansible 作为中央控制器来管理 IT 系统。您还了解了 Ansible 的各个组件,包括剧本、模块、事实、模板和角色。此外,您还了解了 Ansible 架构,包括用于使用 Ansible 管理 IT 的 YAML(即“你不会错过太多”)基于文件的结构。