В чем причина этой ошибки в ANSIBLE 2.7.10 - «ОШИБКА! Записи Playbook должны быть либо действительным воспроизведением, либо оператором включения |» - PullRequest
1 голос
/ 30 апреля 2019

Я смотрю учебник по 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 подтвердил, что это правильно.Я использовал ansible 2.7.10 на моей простейшей системе OS Loki.Я только начал изучать Ansible и YAML и не нашел ни единого намека, почему эта ошибка происходит!

1 Ответ

3 голосов
/ 30 апреля 2019

Ваш 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 клавиш.

...