在我的剧本中,我有一个条件包含语句来包含一个任务:
tasks:
# Install Java if not present
- name: Execute Java
shell: java -version
register: result
ignore_errors: True
- include: tasks/java.yml
when: result | failed
...
Run Code Online (Sandbox Code Playgroud)
当我执行playbook时,它会发出错误:
user1@localhost:~ ansible-playbook tomcat.yml
ERROR: tasks is not a legal parameter in an Ansible task or handler
Run Code Online (Sandbox Code Playgroud)
但是,当我用其他东西替换这个include语句时shell,playbook按预期运行....
Ansible docs告诉任务可以有条件地包含在内,为什么我在这里收到错误?
Ram*_*nte 16
解决方案:您应该忽略包含文件中的"tasks:"部分.
为什么它失败: 当你包括,你已经在任务部分,所以对Ansible它看起来像:
- tasks:
tasks:
- name: https://www.digitalocean.com/pricing/
...
Run Code Online (Sandbox Code Playgroud)