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日,于内蒙古呼和浩特。