在Python中使用Ansible
在以下教程中,我们将了解Ansible以及它的优势以及如何在Python中使用Ansible。
Ansible简介
Ansible 是一个开源平台或自动化工具,用于执行IT任务,如部署应用程序,管理配置,编排内部服务和提供。随着时间的推移,自动化成为关键,信息技术的高度复杂环境通常需要开发人员和系统管理员快速扩展以便手动执行每个功能。自动化有助于简化复杂的任务,并使开发人员的工作更易管理。它还允许开发人员专注于增加组织价值的其他活动。换句话说,自动化通过节省时间来提高效率。正如上面提到的,Ansible是自动化时代快速崛起的工具之一。
什么是Ansible
- Ansible是一个 基于推送的基础设施即代码(IaC) ,提供了一个用户友好的特定领域语言,以声明方式按需定义架构。
- 推送式这个术语表示Ansible使用SSH在执行Ansible的机器和应用配置的机器之间进行通信。
- 我们想要配置的与Ansible一起工作的机器称为 受控节点 或 Ansible主机 。在Ansible中,主机列表称为 清单 。
- 读取定义文件并执行Ansible以将配置推送到主机的机器称为 控制节点 。
- Ansible使用Python编程语言编写,并且学习曲线相当简单。设置Ansible的过程非常简单,不依赖于任何额外的应用程序、服务器或客户端守护程序。
- Ansible基于embracing系统的相互关系和架构的原则。与用于管理配置的其他工具(如Puppet、Chef或Salt)一样,它使用两种类型的服务器:控制机和节点。
- Ansible使用称为Ansible模块的小程序来编排节点。这些模块是通过SSH执行选择的系统状态的资源模型。我们不需要任何代理和额外的自定义安全基础设施。
- 模块库可以存在于任何机器中。模块使用JSON协议通过标准输出执行任务,并以任何编程语言编写方便的代码,包括Python。
- 该系统使用YAML格式的Ansible剧本来描述自动化工作。这样,它既适合机器又适合人类。当节点不受Ansible管理时,它不会消耗资源,因为后台没有运行程序或守护程序。
Ansible的一些优势
作为一款强大的自动化引擎,Ansible帮助开发者更高效地部署软件。我们可以避免使用代理、定制代码或脚本,主要关注安全性、易审计性、审查和重写内容。相比于其他用于软件自动化的平台,Ansible具有许多优势。下面描述了其中一些优势:
- 简单性: Ansible提供简单性,开发者不需要为应用程序的部署和更新编写脚本或定制代码。它允许以接近普通英语的语言进行自动化。开发人员、系统管理员和IT经理可以轻松阅读、管理和加速他们的项目和程序。
- 完整性: Ansible还提供了完整性,它集合了各种复杂的工具,用于配置管理、应用程序部署、工作流编排,甚至是云端提供,全部包含在一个系统中。模块帮助实现了几乎一切自动化需求,无需额外的应用程序。
- 安全性: Ansible利用SSH,因此不会将有漏洞的代理部署到节点上,也不需要在根目录级别或额外端口上运行守护程序。Ansible提供了无代理环境,有助于提高安全性,并且可以作为非root用户可用。Ansible具备操作系统的内置身份验证功能,支持LDAP、SSSD和Kerberos。
Ansible Python API的用途理解
我们可以使用Ansible的应用程序编程接口(API)使用Python调用Ansible代码。Ansible发布了2.0版本的API,使其能够更好地与不同的编程语言集成。值得注意的是,Ansible已经扩展了其支持Python开发的能力;然而,它的网站也提到,基于自身的判断,可以停止支持API框架(在当前版本的API中创建或修复错误)。
开发者可以利用不同的方法从应用程序编程接口(API)角度使用Ansible。我们可以使用Python的Ansible API来控制节点。我们可以扩展Ansible以响应Python中的不同事件,编写插件并将插件的库存数据从外部数据源中读取。
注意:该API仅用于Ansible的内部使用。Ansible可以随时对此API进行更改,可能会破坏与较旧版本的API向后兼容性。因此,Ansible不支持Python API的任何外部使用。如果我们只想使用Python API来执行模块或playbook,首先我们会考虑使用ansible-runner。