我已经使用 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,然后使用该输入作为必要条件完成特定任务什么时候:。