我想要的是设置变量的优先级。我正在从库存文件中传递变量,如果变量未在库存文件中定义,则它应该要求用户提示。我正在尝试使用 vars_prompt,但当我运行剧本时,它直接给我提示并要求输入值,它不会检查库存文件。所以,我希望它首先检查库存文件,如果变量未在那里定义,它应该在控制台上提示我输入值。如果 ansible 不支持此功能,那么我们可以使用 shell 或命令模块来实现这一点。任何帮助都将不胜感激
下面是我的剧本。和库存文件我正在使用 ansible 版本 1.6 库存文件
[test]
X.X.X.X cr="12"
剧本
名称:-> 将通用配置应用于 {{ target }} 节点主机:“{{ target }}”gather_facts:True
用户:root
前置任务:
名称:-> cr 是否已定义??
失败:msg="请确保在库存主机文件中指定变量‘cr’"
何时:(cr 未定义)
寄存器:cr_value
变量提示:
名称:cr
提示:“请提及 cr id”
私人:否
时间:cr_value|失败
名称:打印cr的值
调试:msg="{{ cr }}"
答案1
Ansible 不支持这个,来自其创作者迈克尔·德哈恩的声音:
vars_prompt 总是提示输入变量。
我建议设置角色默认值,或者在 group_vars/all 中放置一个好的默认值,然后您可以使用“-e”在 CLI 上覆盖它。
作为一种解决方法,您可以default
为变量提示设置一个,如果是这种情况,则覆盖它。
vars_prompt:
- name: cr
prompt: "Please mention the cr id"
private: no
default: 12