一些 Ansible 角色,例如https://github.com/bertvv/ansible-role-hosts,使用可能与本项目需求相差甚远的模板文件。当角色作者没有提供模板名称的变量替换时,是否还有办法替换模板文件?显然,我可以分叉角色并使用我自己的分叉,但我希望有更好的答案,例如“只需将替换模板文件放在依赖于 Bert 角色的角色的模板目录中即可。”
答案1
剧本路径对于相对路径有一些“按我的意思做”的魔力。 rolename/templates
首先按依赖顺序搜索,然后{{playbook_dir}}/templates
如果不以某种方式改变角色,您就无法改变这一点,以下是其中之一:
修改 src 文件名
在您的角色上添加依赖项,以提供同名的不同模板
编辑他们的模板
我最喜欢更改文件名。向他们发送一个更改,将源模板名称变为角色默认值中的变量。
答案2
如果您愿意在每次运行 ansible 时发生更改,您可以在应用角色后lineinfile
对实例化的模板文件(即任务dest
中)使用任务。template