Ansible API封装

前言

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

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

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

ansible-runner介绍

这个包是ansible-runner,主页地址:https://github.com/ansible/an...。这个包对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,好东西,值得推荐。


人生是个圆,有的人走了一辈子也没有走出命运画出的圆圈,其实,圆上的每一个点都有一条腾飞的切线。

c22e6a89f17edc02bf80c098f4492c54.jpeg

玩代码、玩技术

长按识别二维码,关注“果冻想”

如果觉得还不错,可以点个“在看”哦~

posted @ 2020-10-29 08:23  ^_^果冻^_^  阅读(1)  评论(0编辑  收藏  举报  来源