在 Ansible 中更改 diff 格式/输出?外部 diff 命令?

在 Ansible 中更改 diff 格式/输出?外部 diff 命令?

在 Ansible(此处为 v2.11)中使用时--diff,它会显示更改的差异。我想更改其输出格式。在 ansible 中,是否可以告诉它使用外部命令来生成差异字符串/输出?

答案1

修改 Ansible 的 diff 方法需要更改代码。

价值观diff字典返回是每个模块的责任。以太beforeafter带有状态完整文本表示的密钥lineinfile就是一个例子。或者prepared模块自己执行 diff 的密钥,例如模块git所做的。

没有通用方法可以将模块的预制 diff 方法更改为 diffutils 脚本或 Python difflib 或其他任何方法。module_utils如果您希望这成为任何地方的选项,请考虑将通用 diff 包装器编写为代码。

回调插件会根据此差异输出执行某些操作,默认回调会打印差异。几乎所有引用差异的回调都使用CallbackBase._get_diff,它又利用 Python difflib 进行比较beforeafter

要改变标准输出,请编写一个回调插件,可能将默认插件子类化并替换方法v2_on_file_diff


对我来说,Ansible diff 是供人类使用的,在许多其他输出中以彩色和漂亮的方式打印。机器可解析的 diff 可能更容易从随时间变化的数据库中获取,例如版本控制中的 Ansible playbook。

相关内容