如何为导入的 Ansible Galaxy 角色指定默认变量?

如何为导入的 Ansible Galaxy 角色指定默认变量?

在为 Ansible playbook 编写自定义角色时,可以指定默认值。我想在使用角色时执行相同操作Ansible Galaxy(Ansible“包管理器”)。

例如,当使用流行的redis 角色,我希望能够指定一个默认值redis_version,以便任何导入该角色的人都会获得相同的效果。

如果不集中处理,我会在使用角色时将 redis 版本放入每个剧本中的变量部分。这不是理想的选择。我能想到的其他方法:

  • 创建一个新角色,将默认变量放在那里,然后使 Galaxy 角色成为依赖项。(不确定变量是否被传递下来。)
  • 将默认值放入ansible.cfg[defaults]

最佳实践是什么?

答案1

弄清楚在哪里定义变量,不要让它变得复杂。 变量优先级:我应该把变量放在哪里?

例如,group_vars 与剧本一起。或者来自动态库存。还有更多地方可以放置变量。

如果您希望用户只需要导入角色,而其游戏或库存中没有变量,请考虑分叉该角色并更改默认值。您现在必须保留它,这是一个缺点。我宁愿将变量放在游戏中,它只有几行。

相关内容