果冻想
认真玩技术的地方

Ansible API封装

Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。
Ansible系列博文直达链接:Ansible入门系列

前言

在前面的文章中,我详细的总结了使用Ansible来执行命令和YAML脚本,除了这些外,Ansible还对外提供了Python API接口,以便我们能进行二次开发,也就意味着我们可以通过Python来调用这些接口完成更强大的功能,虽然Ansible现有提供的模块功能已经很强大了,但是我们总有我们个性化的需求,个性化的场景。

很可惜的是,Ansible提供的接口文档缺失的可怜,很多东西只能去靠猜,对于我们作为一个非深度使用者来说,这的确有点痛苦,有点浪费时间,所以这篇文章我就不直接说Ansible的API了,而是介绍一个网上牛人封装的包,通过对Ansible API的封装,提供了非常全面的文档和案例,非常适合我们去把玩。

最可恶的是Ansible API不是向下兼容的,所以找个中间包就很有必要的,这就是我下面要说的ansible-runner包。

ansible-runner介绍

这个包是ansible-runner,主页地址:https://github.com/ansible/ansible-runner。这个包对Ansible的API进行了封装,并提供了更简洁的操作方式。对于简单的命令,我们可以这样执行:

import ansible_runner

r = ansible_runner.run(quiet=True, json_mode=True, private_data_dir='/tmp/data', host_pattern='web', module='shell', module_args='free -h')

对于playbook,我们可以这样执行:

import ansible_runner

r = ansible_runner.run(quiet=True, json_mode=True,private_data_dir='/tmp/data', host_pattern='web', playbook='/home/yanggd/ansible/yaml/whenTest.yaml')

总之就是很简单,用起来很舒服的那种。

总结

一开始,我还在努力的研究原生的API,但是越看越恶心,文档不齐全,只能这里收集一点,那里看一点,完全没法系统的学习,后来索性就直接放弃了,就直接看ansible-runner,好东西,值得推荐。如果觉的还不错,可以点击下方的“打赏”哦。

果冻想,认真玩技术的地方。

2020年6月7日,于内蒙古呼和浩特。

赞(1) 打赏
未经允许不得转载:果冻想 » Ansible API封装
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻

感谢支持果冻想

支付宝扫一扫打赏

微信扫一扫打赏