Проблема:
В логах 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 говорит об ошибке парсинга файла конфигурации и означает то, что некоторые параметры либо не будут корректно применены, либо не дадут запустить плейбуки. Например в ситуации:
ansible_user: ]tester
указан символ ']' в имени пользователя, что является зарезервированным окончание массива данных YAML. Этот параметр выдаст ошибку.
Проблема duplicate dict key говорит об ошибке дублирования ключа и означает, что в файлах конфигурации указанны одинаковые названия для параметров. В этом случае будет применён последний объявленный параметр. Например в ситуации:
# Часовой пояс tz: Europe/Moscow # Часовой пояс tz: Asia/Novosibirsk
повторно указан ключ 'tz' в файле all.yml, что является дубликатом. В этом случае первый параметр будет проигнорирован и применится последний - Asia/Novosibirsk
Для решения подобных проблем проверьте файлы конфигурации (v1.37_Перезатирание параметров конфигурации сервисов при запуске Ansible) и исправьте некоректные параметры. После - запустите скрипт заново с необходимым флагом.