我正在尝试使用 vars_prompt,但是当我运行剧本时,它直接给我提示并要求输入值,它不会检查库存文件

我正在尝试使用 vars_prompt,但是当我运行剧本时,它直接给我提示并要求输入值,它不会检查库存文件

我想要的是设置变量的优先级。我正在从库存文件中传递变量,如果变量未在库存文件中定义,则它应该要求用户提示。我正在尝试使用 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

相关内容