当前位置: 首页 > 知识库问答 >
问题:

Ansible-Conditional在playbook级别上不适用于vars_prompt时

公冶才
2023-03-14

我试图做的是提示用户输入变量值,只有当用户在命令行调用Ansible-Playbook install_tool.yml......时,--extra-vars“install_tool=true”

在workspace/ansible/install_tool中,我有:

- hosts: all
  become: true
  gather_facts: false

  vars:
    instance: test
    #install_tool: false
    company_api_url: DUMMY_INVALID_URL

  vars_prompt:
    - name: "company_api_url"
      prompt: "Enter Company API URL: "
      default: "https://{{ instance }}.company.com"
      private: no
      when: install_tool == "true" and company_api_url == "DUMMY_INVALID_URL"
      # or
      #when: ( "{{ install_tool }}" == "true" and "{{ company_api_url }}" == "DUMMY_INVALID_URL" )

  pre_tasks:
    - debug: msg="install_tool = {{ install_tool }} and instance = {{ instance }}" 
      when: install_tool == "true"

我的问题是:
如何使上述条件提示工作(使用有效的替代default值作为提示变量),并根据install_tool变量的值跳过提示用户?

我得到了以下输出(但我希望得到一个替换的URL值,比如:[https://test.company.com]),即使在命令行设置或传递install_toolfalse时,它仍然会提示:

跑步:

$ ansible-playbook -i "localhost," --connection=local install_tool.yml --extra-vars "install_tool=false instance=qa"

$ ansible-playbook -i inventory -l localhost install_tool.yml --extra-vars "install_tool=false"
...
.....some lines here
...
PLAYBOOK: install_tool.yml *******************************************
1 plays in install_tool.yml
Enter Company API URL:  [https://{{ instance }}.company.com]: 

共有1个答案

督宏旷
2023-03-14

您可以在这里检查所有受支持的属性是否有提示的变量。

提示的变量不支持when语句。从来都不是。

也不支持提示变量的模板默认值。

 类似资料:
  • 我希望使用运行测试,但只能针对主机服务器1。有办法做到这一点吗?

  • 不能站在巨人的肩膀上的编程语言不是好语言,支持重用机制会节省调研重复的工作上浪费大量的时间,当然也会提高可维护性。 Playbook的支持两种重用机制,一种是简单的直接重新利用静态的Playbook脚本,例外一种是类似于编程语言中函数的机制。 include语句 - 重用静态的Playbook脚本,使用起来简单、直接。 role语言 - Playbook的“函数机制”,使用方法稍复杂、功能强大。是

  • YML ansible的脚本语言,yaml格式。请参考YAML语法结构章节 别人的Playbook 能够学会快速用别人的成果,高效地分享自己的成果,才是好码农,才是能早下班的好码农。在你动手从头开始写一个Playbook之前,不如先参考一下别人的成果吧。 官方例子 Ansible官方提供了一些比较常用的、经过测试的Playbook例子: https://github.com/ansible/ans

  • 本节列举了写第一个Playbook,你必须了解基本语法。 随着你面临的机器越多,配置的需求越复杂,你可能需要了解后面介绍的一些稍微复杂逻辑的语句。 执行Playbook语法 $ ansible-playbook deploy.yml 查看输出的细节 ansible-playbook playbook.yml --verbose 查看该脚本影响哪些hosts ansible-playbook pl

  • 问题内容: 如何使用python脚本运行剧本?在python中使用ansible模块等效于以下内容: 我在http://docs.ansible.com/developing_api.html中查看了它们的文档,但是它们的示例非常有限。 问题答案: 弃用声明:此帖子自ansible 2起不起作用。API已更改。 这在“ Python API”下的Ansible文档中进行了介绍。 例如,通过以下方式

  • 我在http://docs.ansible.com/development_api.html中查看了他们的文档,但它们的示例非常有限。