没有找到预期的<document start>

问题描述 投票:0回答:6

Ansible 正在读取

/etc/ansible/hosts
文件并给出我不明白的错误。

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. 为什么 ansible 尝试使用 yaml 插件解析这个 INI 样式文件?

  2. 什么是

    <document start>
    ? 我在任何文档中都找不到这个

该文件看起来像这样(不是实际的)

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

编辑:

更多信息:

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
ansible ansible-inventory
6个回答
3
投票

当您的子标题与其父标题不一致时,可能会发生这种情况。例如:

[webservers]
1.2.3.4
1.2.3.5

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

仔细看,

webservers
!=
webserver
。添加
s
,你就可以开始了。

我用谷歌搜索了同样的错误,这把我带到了这里。


1
投票

当我重新安装 ansible 并将 /etc/ansbile/ansible.cfg 默认恢复为原始状态时,我的错误已得到纠正。 库存文件实际上很好。 该问题似乎与我修改的库存插件有关。


0
投票

当清单文件中存在某些语法问题时,就会发生这种情况。

[local]
localhost
[dest]
{{ dest_server }} ansible_user= {{dest_user}} ansible_password= {{dest_passwd }}

我的是因为

_
ansible_user= 
之间有空间
{{dest_user}}


0
投票

这似乎是一个通用的“解析您的库存时出错”类型的错误。

对我来说,当主机组被库存目录中不同 ini 文件中定义的另一个组引用时,就会发生这种情况,即

我的库存/a

[parent-host-group:children]
child-host-group

我的库存/b

[child-host-group]
some.hosts

ansible-playbook -i myinventory ...

解决方法是将子组的空组条目添加到引用文件中:

[child-host-group]
# See myinventory/b - just defined here to make parent-host-group work

[parent-host-group:children]
child-host-group

这里参考官方文档


0
投票

我放了

[servers]

作为第一行解决同样的问题


-4
投票

如果这是您实际的

hosts
内容,它应该可以工作,但也许您使用另一个主机文件。您可以使用此命令指定自定义主机或清单文件:

ansible-playbook -i /path/to/your/custom/file

请将您的实际主机文件(去除敏感数据)放入问题中以供审核。

© www.soinside.com 2019 - 2024. All rights reserved.