您的位置:

Python 中的 Ansible

在下面的教程中,我们将了解 Ansible 及其优点,以及如何在 Python 中使用 Ansible。

Ansible 简介

Ansible 是一个开源平台或自动化工具,用于执行信息技术任务,如部署应用、管理配置、协调服务内和资源调配。自动化是久而久之的关键所在,信息技术的环境非常复杂,如果开发人员和系统管理员必须手动执行每一项功能,他们往往需要过快地扩展,以便协同工作。自动化有助于简化复杂的任务,并使开发人员的工作更易于管理。它还允许开发人员将注意力集中在包含组织价值的其他活动上。换句话说,自动化通过释放时间来提高效率。如上所述,Ansible 是自动化时代迅速崛起的工具之一。

什么是 Ansible?

  1. Ansible 是一种基于推送的基础设施即代码(IaC) ,它提供了一种用户友好的特定于领域的语言,因此我们可以根据需要以声明的方式定义架构。
  2. 术语“基于推送”表示 Ansible 利用 SSH 在执行 Ansible 的机器和应用配置的机器之间进行通信。
  3. 我们喜欢配置的使用 Ansible 的机器被称为受管节点或 Ansible 主机。就 Ansible 而言,主机列表被称为清单。
  4. 读取定义文件并执行 Ansible 以将配置推送到主机的机器称为控制节点。
  5. Ansible 是用 Python 编程语言编写的,学习曲线非常小。设置 Ansible 的过程非常简单,不依赖任何额外的应用、服务器或客户端守护程序。
  6. Ansible 基于包含系统的相互关系和体系结构的原则。像其他用于管理配置的工具(如木偶、厨师或盐)一样,它与两种类型的服务器一起工作:控制机器和节点。
  7. Ansible 使用称为 Ansible 模块的小程序来编排节点。这些模块是通过 SSH 执行的所选系统状态的资源模型。为此,我们不需要任何代理和额外的定制安全基础设施。
  8. 模块库可以存在于任何机器中。这些模块在标准输出上使用 JSON 协议执行任务,并用任何编程语言(包括 Python)编写方便的代码。
  9. 该系统利用 Ansible 剧本格式的 YAML 来描述自动化工作。这样,它对机器和人类都很友好。当节点不是由 Ansible 管理时,它不会消耗资源,因为程序和守护进程都没有在后台运行。

Ansible 的一些好处

作为一个强大的自动化引擎,Ansible 帮助开发人员更高效地部署软件。我们可以避免代理、自定义代码或自定义脚本,主要关注内容的安全性、易用性、审查和重写。与用于软件自动化的类似平台相比,Ansible 有许多优势。下面描述了其中的一些优点:

  1. 简单性: Ansible 提供了简单性,因为开发人员不需要为应用的部署和更新编写脚本或定制代码。它允许以接近简单英语的语言实现自动化。开发人员、系统管理员和信息技术经理很容易阅读、管理和加快他们的项目和程序。
  2. 完整性: Ansible 还提供了完整性,因为它与不同的复杂工具相结合,用于在单个系统中管理配置、部署应用、编排工作流,甚至云资源调配。模块有助于自动化几乎所有现成的东西,并且不需要额外的应用。
  3. 安全性: Ansible 利用 SSH,因此它不会将易受攻击的代理部署到节点,也不需要根级或额外端口上的守护程序。ans sibs 提供了一个无代理环境,有助于提高安全性,并且可以作为非根用户使用。可扩展功能内置操作系统身份验证,支持 LDAP、SSSD 和 Kerberos。

理解 Python API 的潜在用途

我们可以使用 Ansible 的 API(API)使用 Python 调用 Ansible 代码。Ansible 发布了其 API 的 2.0 版本,允许与不同编程语言更好地集成。值得注意的是,Ansible 已经扩展了它的功能,以便在 Python 的帮助下支持开发;但是,其网站上也提到,也可以根据自己的判断停止支持 API 框架(创建甚至修复当前版本 API 中的一个 bug)。

从 API 的角度来看,开发人员可以使用不同的方法来利用 Ansible。我们可以利用 Python 编程语言的 Ansible API 来控制节点。我们可以在 Python 中扩展 Ansible 来响应不同的事件,编写插件和来自外部数据源的插件清单数据。

注意:这个 API 是为 Ansible 的内部使用而设想的。Ansible 可能会在任何时候对该 API 进行更改,这可能会破坏与该 API 旧版本的向后兼容性。因此,Ansible 不支持任何外部使用的 Python API。如果我们只想利用 Python API 来执行模块或剧本,首先,我们会考虑一个可移植的运行器。