如何替换 Ansible 角色中的模板文件?

如何替换 Ansible 角色中的模板文件?

一些 Ansible 角色,例如https://github.com/bertvv/ansible-role-hosts,使用可能与本项目需求相差甚远的模板文件。当角色作者没有提供模板名称的变量替换时,是否还有办法替换模板文件?显然,我可以分叉角色并使用我自己的分叉,但我希望有更好的答案,例如“只需将替换模板文件放在依赖于 Bert 角色的角色的模板目录中即可。”

答案1

剧本路径对于相对路径有一些“按我的意思做”的魔力。 rolename/templates首先按依赖顺序搜索,然后{{playbook_dir}}/templates

如果不以某种方式改变角色,您就无法改变这一点,以下是其中之一:

  • 修改 src 文件名

  • 在您的角色上添加依赖项,以提供同名的不同模板

  • 编辑他们的模板

我最喜欢更改文件名。向他们发送一个更改,将源模板名称变为角色默认值中的变量。

答案2

如果您愿意在每次运行 ansible 时发生更改,您可以在应用角色后lineinfile对实例化的模板文件(即任务dest中)使用任务。template

相关内容