我正在编写一个作为动作插件实现的Ansible模块,类似于Ansible核心提供的模板模块和插件。我想像模块一样返回带有前后行的diff数据。我可以找到如何从实际模块返回此数据的示例,但我无法推断如何将相同的信息与操作插件的返回关联起来。
在lineinfile
模块中,diff数据作为module.exit_json()
调用中的diff关键字参数返回,如下所示:
module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist)
但是,似乎没有任何插件调用过exit_json()
,它们也不能调用,因为它们没有module
数据结构可用。
module
上的exit_json()
方法似乎是在它调用的line 2042 of module_utils/basic.py
上定义的,反过来,它调用line 2007上的self._return_formatted()
,这似乎将kwargs
(在一些清理之后)回显到stdout
。所以。。。只是在现有的result
结构中添加一个diff
关键字?我就玩这个。
发布于 2019-05-28 02:23:10
是的,在插件返回的现有result
字典中添加一个diff
关键字和值似乎就足够了。下面是一个不完整的极简主义的例子:
class ActionModule(ActionBase):
def run(self, tmp=None, task_vars=None):
diff = {'before': 'old data\n',
'after': 'new data\n'}
result['diff'] = diff
result['changed'] = True
return result
https://stackoverflow.com/questions/56330716
复制相似问题