在为 Ansible playbook 编写自定义角色时,可以指定默认值。我想在使用角色时执行相同操作Ansible Galaxy(Ansible“包管理器”)。
例如,当使用流行的redis 角色,我希望能够指定一个默认值redis_version
,以便任何导入该角色的人都会获得相同的效果。
如果不集中处理,我会在使用角色时将 redis 版本放入每个剧本中的变量部分。这不是理想的选择。我能想到的其他方法:
- 创建一个新角色,将默认变量放在那里,然后使 Galaxy 角色成为依赖项。(不确定变量是否被传递下来。)
- 将默认值放入
ansible.cfg[defaults]
。
最佳实践是什么?
答案1
弄清楚在哪里定义变量,不要让它变得复杂。 变量优先级:我应该把变量放在哪里?
例如,group_vars 与剧本一起。或者来自动态库存。还有更多地方可以放置变量。
如果您希望用户只需要导入角色,而其游戏或库存中没有变量,请考虑分叉该角色并更改默认值。您现在必须保留它,这是一个缺点。我宁愿将变量放在游戏中,它只有几行。