在 Ansible(此处为 v2.11)中使用时--diff
,它会显示更改的差异。我想更改其输出格式。在 ansible 中,是否可以告诉它使用外部命令来生成差异字符串/输出?
答案1
修改 Ansible 的 diff 方法需要更改代码。
价值观diff
字典返回是每个模块的责任。以太before
和after
带有状态完整文本表示的密钥lineinfile
就是一个例子。或者prepared
模块自己执行 diff 的密钥,例如模块git
所做的。
没有通用方法可以将模块的预制 diff 方法更改为 diffutils 脚本或 Python difflib 或其他任何方法。module_utils
如果您希望这成为任何地方的选项,请考虑将通用 diff 包装器编写为代码。
回调插件会根据此差异输出执行某些操作,默认回调会打印差异。几乎所有引用差异的回调都使用CallbackBase._get_diff,它又利用 Python difflib 进行比较before
和after
。
要改变标准输出,请编写一个回调插件,可能将默认插件子类化并替换方法v2_on_file_diff
。
对我来说,Ansible diff 是供人类使用的,在许多其他输出中以彩色和漂亮的方式打印。机器可解析的 diff 可能更容易从随时间变化的数据库中获取,例如版本控制中的 Ansible playbook。