如何解决Ansible错误:“冲突的操作语句:包含,文件”

时间:2019-07-17 07:04:04

标签: ansible

在include语句中出现一些错误。我有两个简单的剧本,但找不到问题。

files.yml:

---
- name: create leading path
  file:
    path: "{{ path }}"
    state: directory
- name: touch the file
  file:
    path: "{{ path + '/' + file }}"
    state: touch

include.yml:

---
- name: touch files
  hosts: localhost
  gather_facts: false
  tasks:
    - include: files.yaml
      path: /tmp/foo
      file: herp

如果我运行include.yml,则会出现此错误:

  

错误!冲突的动作陈述:包含,文件

     

错误似乎出在'/home/ansible/mastering_ansible/touch.yml'中:第7行,第13列,但可能   根据确切的语法问题放在文件的其他位置。

违规行似乎是:

tasks:
          - include: files.yml
            ^ here

1 个答案:

答案 0 :(得分:0)

模块include仅是“自由格式”,即没有属性。错误是错误语法造成的

  tasks:
    - include: files.yaml
      path: /tmp/foo
      file: herp

正确

  tasks:
    - include: files.yaml

如果您在使用路径时遇到问题,请参见Search paths in Ansible,并可以选择使用Special variables。例如

    - include: "{{ playbook_dir }}/tasks/files.yaml"

注释

  • files.yml 不是剧本。
  • 错误消息为“ /home/ansible/mastering_ansible/touch.yml': line 7, column 13 ...”,但已发布的代码中没有touch.yml。
  • 如果模块 include 具有属性 path file ,则正确的缩进应该是

    - include: files.yaml
        path: /tmp/foo
        file: herp
    
  • 有关详细信息,请参见Including and Importing