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
,好东西,值得推荐。
人生是个圆,有的人走了一辈子也没有走出命运画出的圆圈,其实,圆上的每一个点都有一条腾飞的切线。
玩代码、玩技术
长按识别二维码,关注“果冻想”
如果觉得还不错,可以点个“在看”哦~