Проблема:

В логах Ansible присутствуют следующие Warning сообщения:

[WARNING]:  * Failed to parse /ansible/inventory/my_softwlc/inventory.yml with
auto plugin: We were unable to read either as JSON nor YAML, these are the
errors we got from each: JSON: Expecting value: line 1 column 1 (char 0)
Syntax Error while loading YAML.   did not find expected node content. while
parsing a block node did not find expected node content   in "<unicode
string>", line 14, column 25  The error appears to be in
'/ansible/inventory/my_softwlc/inventory.yml': line 14, column 25, but may be
elsewhere in the file depending on the exact syntax problem.  The offending
line appears to be:            ansible_host: 192.168.1.1
ansible_user: ]tester                         ^ here
[WARNING]:  * Failed to parse /ansible/inventory/my_softwlc/inventory.yml with
yaml plugin: We were unable to read either as JSON nor YAML, these are the
errors we got from each: JSON: Expecting value: line 1 column 1 (char 0)
Syntax Error while loading YAML.   did not find expected node content. while
parsing a block node did not find expected node content   in "<unicode
string>", line 14, column 25  The error appears to be in
'/ansible/inventory/my_softwlc/inventory.yml': line 14, column 25, but may be
elsewhere in the file depending on the exact syntax problem.  The offending
line appears to be:            ansible_host: 192.168.1.1
ansible_user: ]tester                         ^ here
[WARNING]:  * Failed to parse /ansible/inventory/my_softwlc/inventory.yml with
ini plugin: Invalid host pattern 'all:' supplied, ending in ':' is not allowed,
this character is reserved to provide a port.
[WARNING]: Unable to parse /ansible/inventory/my_softwlc/inventory.yml as an
inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: softwlc_main
[WARNING]: While constructing a mapping from
/ansible/inventory/my_softwlc/group_vars/all.yml, line 12, column 1, found a
duplicate dict key (tz). Using last defined value only.

Решение:

Данные ошибки могут указывать на некоректное указание параметров как в файлах конфигурации (all.yml, default.yml и др.), так и в файлах хостов (inventory.yml)

v1.37_Перезатирание параметров конфигурации сервисов при запуске Ansible

К неверно указанным парметрам относится:

  • Использование зарезервированных форматом .yaml символов (кавычки, скобки, двоеточие т.п.)
  • Использование дубликата для ключа (на одном уровне расположены одинаковые ключи к переменным)
  • Некорректное указание других параметров

Данные ошибки, не смотря на непримечательное отображение Warning, являются критичными при запуске плейбуков.


Проблема Failed to parse говорит об ошибке парсинга файла конфигурации и означает то, что некоторые параметры либо не будут корректно применены, либо не дадут запустить плейбуки. Например в ситуации:

softwlc-ansible-1.37/inventory/my_softwlc/inventory.yml
          ansible_user: ]tester

указан символ ']' в имени пользователя, что является зарезервированным окончание массива данных YAML. Этот параметр выдаст ошибку.


Проблема duplicate dict key говорит об ошибке дублирования ключа и означает, что в файлах конфигурации указанны одинаковые названия для параметров. В этом случае будет применён последний объявленный параметр. Например в ситуации:

softwlc-ansible-1.37/inventory/my_softwlc/group_vars/all.yml
# Часовой пояс
tz: Europe/Moscow

# Часовой пояс
tz: Asia/Novosibirsk

повторно указан ключ 'tz' в файле all.yml, что является дубликатом. В этом случае первый параметр будет проигнорирован и применится последний - Asia/Novosibirsk


Для решения подобных проблем проверьте файлы конфигурации (v1.37_Перезатирание параметров конфигурации сервисов при запуске Ansible) и исправьте некоректные параметры. После - запустите скрипт заново с необходимым флагом.

  • Нет меток