did not find expected <document start>

stone.212 picture stone.212 · Oct 10, 2019 · Viewed 7.6k times · Source

Ansible is reading /etc/ansible/hosts file and giving errors that I don't understand.

ARNING]:  * Failed to parse /etc/ansible/hosts with yaml plugin: Syntax
Error while loading YAML.   did not find expected <document start>  The error
appears to be in '/etc/ansible/hosts': line 2, column 1, but may be elsewhere
in the file depending on the exact syntax problem.
  1. Why is ansible trying to parse this INI-style file with yaml plugin?

  2. What is <document start>? I can't find this in any documentation

The file looks something like this (not actual)

[first_group]
host-1 ansible_host=1.1.1.1
host-2 ansible_host=2.2.2.2

Thank you.

EDIT:

More information:

ansible@ansible:~$ ansible-config dump | grep INVENTORY
DEFAULT_INVENTORY_PLUGIN_PATH(default) = [u'/home/ansible/.ansible/plugins/inventory', u'/usr/share/ansible/plugins/inventory']
INVENTORY_ANY_UNPARSED_IS_FAILED(default) = False
INVENTORY_CACHE_ENABLED(default) = False
INVENTORY_CACHE_PLUGIN(default) = None
INVENTORY_CACHE_PLUGIN_CONNECTION(default) = None
INVENTORY_CACHE_PLUGIN_PREFIX(default) = ansible_facts
INVENTORY_CACHE_TIMEOUT(default) = 3600
INVENTORY_ENABLED(default) = ['host_list', 'script', 'auto', 'yaml', 'ini', 'toml']
INVENTORY_EXPORT(default) = False
INVENTORY_IGNORE_EXTS(default) = {{(BLACKLIST_EXTS + ( '.orig', '.ini', '.cfg', '.retry'))}}
INVENTORY_IGNORE_PATTERNS(default) = []
INVENTORY_UNPARSED_IS_FAILED(default) = False

Answer

ExactaBox picture ExactaBox · Apr 19, 2020

This may occur when your sub-headers don't line up with their parents. For example:

[webservers]
1.2.3.4
1.2.3.5

[webserver:vars]
ansible_python_interpreter=/usr/bin/python3

Look closely, webservers != webserver. Add the s and you should be good to go.

I Google'd the same error, which brought me here.