ansible выдает синтаксическую ошибку при загрузке YAML. не найден ожидаемый ключ

#ansible

#ansible

Вопрос:

мой yml выглядит так:

 ---
# YAML documents begin with the document separator ---

# The minus in YAML this indicates a list item.  The playbook contains a list 
# of plays, with each play being a dictionary
-
 
  # Hosts: where our play will run and options it will run with
  hosts: localhost
  gather_facts: false

  # Vars: variables that will apply to the play, on all target systems
  vars:
      DDVE_public_IP : 34.107.103.175
      destination_port: 3009
      Instance_id : 8529834022607504819
      S3_bucket_name : bucket_for_ddve_6

  # Tasks: the list of tasks that will be executed within the playbook
  tasks:
     - name: login access token
       uri:
          url: https://{{ DDVE_public_IP }}:{{ destination_port }}/{{ resource_path }}
          method: POST
          headers:
              Content-Type: application/json
          body_format: json
          body:
              username: sysadmin
              password: {{ Instance_id }}
        return_content: yes
        ignore_errors: yes
        register: rest_post
        vars:
            resource_path: rest/v1.0/auth

      - name: DEBUG / GOT INFO
        debug:
            msg: "{{ rest_post.json }}"
        when: rest_post.status ==  201

  # Handlers: the list of handlers that are executed as a notify key from a task

  # Roles: list of roles to be imported into the play

# Three dots indicate the end of a YAML document
...

ansible-playbook ddve6-post-deploy-object-store.yml
 

[ПРЕДУПРЕЖДЕНИЕ]: инвентаризация не была проанализирована, доступен только неявный localhost.
[ПРЕДУПРЕЖДЕНИЕ]: список предоставленных хостов пуст, доступен только localhost. Обратите внимание, что
неявный localhost не соответствует ‘all’.
ОШИБКА! Мы не смогли прочитать ни как JSON, ни YAML, это ошибки, которые мы получили от каждого:
JSON: ожидаемое значение: строка 1, столбец 1 (символ 0)

Синтаксическая ошибка при загрузке YAML. не найден ожидаемый ключ

Ошибка, по-видимому, находится в ‘/ Users / juergen / Documents / DPSCodeAcademy /Ansible / #dev / ddve / ddve6-post-deploy-object-store.yml’: строка 30, столбец 9, но может быть в другом месте файла в зависимости от конкретной синтаксической проблемы.

Нарушающая строка выглядит:

              password: {{ Instance_id }}
       return_content: yes
       ^ here
 

Я понятия не имею, откуда эта ошибка, поскольку я не могу найти здесь проблему с ответом.

Ответ №1:

У вас просто есть некоторые ошибки отступа в этом документе YAML. Выберите уровень отступа (например, 2 пробела для каждого уровня) и придерживайтесь его последовательно. У многих редакторов есть плагины, которые будут проверять синтаксис ваших документов YAML во время их написания.

Следующее проверяется правильно:

 ---

- hosts: localhost
  gather_facts: false

  vars:
    DDVE_public_IP: 34.107.103.175
    destination_port: 3009
    Instance_id: 8529834022607504819
    S3_bucket_name: bucket_for_ddve_6

  tasks:
    - name: login access token
      uri:
        url: https://{{ DDVE_public_IP }}:{{ destination_port }}/{{ resource_path }}
        method: POST
        headers:
          Content-Type: application/json
        body_format: json
        body:
          username: sysadmin
          password: "{{ Instance_id }}"
      return_content: true
      ignore_errors: true
      register: rest_post
      vars:
        resource_path: rest/v1.0/auth

    - name: DEBUG / GOT INFO
      debug:
        msg: "{{ rest_post.json }}"
      when: rest_post.status ==  201
 

Обратите внимание, что очень редко ваши документы YAML завершаются ... маркером.

Комментарии:

1. Спасибо за это. Теперь я столкнулся с некоторыми проблемами ReST uri