在ansible 2.7.10中出现此错误的原因是什么 - “错误! playbook条目必须是有效的游戏或包含声明|“

问题描述 投票:1回答:1

我正在观看Ansible的教程,我必须部署一个剧本。游戏书代码如下:

- name:"Do a demo"
  hosts:groupA

  tasks:!!seq
    - name:demo task 1
      debug:!!seq
        msg:"this is task 1"

    - name:demo task 2
      debug:!!seq
        msg:"this is task 2"

- name:"Do another demo"
  hosts:groupB

  tasks:!!seq
    - name:demo task 3
      debug:!!seq
      msg:"this is task 3"

    - name:demo task 4
      debug:!!seq
        msg:"this is task 4"

当我尝试使用ansible-playbook -i hosts demoplays.yaml命令部署上述剧本时,出现了错误: -

ERROR! playbook entries must be either a valid play or an include statement

The error appears to have been in '/home/user/demoplays.yaml': line 1, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name:"Do a demo"
  ^ here

起初我认为是yaml语法错误,但是YAML linter验证它是正确的。我在我的基本OS Loki系统上使用ansible 2.7.10。我刚刚开始学习Ansible和YAML,并没有发现任何暗示为什么会发生错误!

ansible yaml ansible-2.x
1个回答
3
投票

你的YAML相当于:

[
  "name:\"Do a demo\" hosts:groupA\ntasks:!!seq - name:demo task 1 debug:!!seq msg:\"this is task 1\"\n- name:demo task 2 debug:!!seq msg:\"this is task 2\"", 
  "name:\"Do another demo\" hosts:groupB\ntasks:!!seq - name:demo task 3 debug:!!seq msg:\"this is task 3\"\n- name:demo task 4 debug:!!seq msg:\"this is task 4\""
]

这可能不是你想要的。尝试更改此项,以便YAML中根级别序列的项成为映射:

- name: "Do a demo"
  hosts: groupA

  tasks: !!seq
    - name: demo task 1
      debug: !!seq
        msg: "this is task 1"

    - name: demo task 2
      debug: !!seq
        msg: "this is task 2"

- name: "Do another demo"
  hosts: groupB

  tasks: !!seq
    - name: demo task 3
      debug: !!seq
        msg: "this is task 3"

    - name: demo task 4
      debug: !!seq
        msg: "this is task 4"

请注意,我不仅在冒号后添加了一个空格使其成为一个值指示器,我还缩进了msg: "this is task 3"以确认其他msg键。

© www.soinside.com 2019 - 2024. All rights reserved.