1 这将引发以下粗体错误:

1 这将引发以下粗体错误:

我已经使用 Ansible 很长时间了,我想到我想根据用户输入为我的剧本添加自定义功能。但是以下剧本会抛出错误:

---
# Test user input in play
- hosts: 10.10.10.10
  gather_facts: yes
  become: yes
  become_method: sudo

# User input can be received via vars_prompt;
  vars_prompt:
  - name:    "q1"
    prompt:  "answer to q1?"
    private: no
    default: 0

  tasks:
  - name:
    block:
      - name: "If user input is 1, then create /tmp/success"
        shell: touch /tmp/success
    when: {{ q1 }} == "1"

1 这将引发以下粗体错误:

错误!加载 YAML 时出现语法错误。未找到预期的键(在线:当:“{{ q1 }}”时)1)

2 该消息还指定;

我们可能错了,但这个看起来可能是缺少引号的问题。当模板表达式括号以值开头时,请始终用引号括起来。例如:

with_items:
  - {{ foo }}

应该写成:

with_items:
  - "{{ foo }}"

我已将两个值的引号改为单/双/零,但这种情况仍然出现,我很难过。

我希望做的是向用户提供他们可以提供的输入列表vars_prompt,然后使用该输入作为必要条件完成特定任务什么时候:

答案1

不要将 when 条件放入括号内。Ansible 条件默认展开。

尝试

当: q1 == “1”

相关内容