YAML 库存解析错误
YAML inventory parsing error
hosts.ini
[local]
127.0.0.1 ansible_connection=local
hosts.yaml
local:
hosts:
127.0.0.1:
vars:
ansible_connection: local
然后我 运行 ansible local -m ping -i hosts.ini
我得到了预期的输出,然后我 运行 ansible local -m ping -i hosts.yaml
我得到了:
[WARNING]: * Failed to parse /home/elruso/projects/ansible/hosts.yaml with ini plugin: /home/elruso/projects/ansible/hosts.yaml:5: Expected key=value host variable assignment, got: local
[WARNING]: Unable to parse /home/elruso/projects/ansible/hosts.yaml as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: Could not match supplied host pattern, ignoring: local
[WARNING]: No hosts matched, nothing to do
根据 docs,我可以毫无问题地将 yaml 文件用作库存。如何指定使用yml插件?
$ansible --version
ansible 2.4.0.0
config file = /home/elruso/projects/ansible/ansible.cfg
configured module search path = ['/home/elruso/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/elruso/.virtualenvs/ansible/lib/python3.6/site-packages/ansible
executable location = /home/elruso/.virtualenvs/ansible/bin/ansible
python version = 3.6.2 (default, Jul 20 2017, 08:43:29) [GCC 5.4.1 20170519]
更新:issue已打开
该问题在 Python 3 中可重现,看起来像是一个错误。
使用Python2代替Python3,因为后者是not officially supported yet.
python 3 上的 ansible 2.4.0 中存在错误(试图在字符串列表中找到 .yml
字节)。
此错误已在本次提交 https://github.com/ansible/ansible/commit/72bdf7aa7e1b867380201092dff65338d59cd8fa 中修复,可能会作为 2.4.1 发布。
删除清单文件并在 ansible 控制器上重新创建它为我修复了它。
hosts.ini
[local]
127.0.0.1 ansible_connection=local
hosts.yaml
local:
hosts:
127.0.0.1:
vars:
ansible_connection: local
然后我 运行 ansible local -m ping -i hosts.ini
我得到了预期的输出,然后我 运行 ansible local -m ping -i hosts.yaml
我得到了:
[WARNING]: * Failed to parse /home/elruso/projects/ansible/hosts.yaml with ini plugin: /home/elruso/projects/ansible/hosts.yaml:5: Expected key=value host variable assignment, got: local
[WARNING]: Unable to parse /home/elruso/projects/ansible/hosts.yaml as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: Could not match supplied host pattern, ignoring: local
[WARNING]: No hosts matched, nothing to do
根据 docs,我可以毫无问题地将 yaml 文件用作库存。如何指定使用yml插件?
$ansible --version
ansible 2.4.0.0
config file = /home/elruso/projects/ansible/ansible.cfg
configured module search path = ['/home/elruso/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/elruso/.virtualenvs/ansible/lib/python3.6/site-packages/ansible
executable location = /home/elruso/.virtualenvs/ansible/bin/ansible
python version = 3.6.2 (default, Jul 20 2017, 08:43:29) [GCC 5.4.1 20170519]
更新:issue已打开
该问题在 Python 3 中可重现,看起来像是一个错误。
使用Python2代替Python3,因为后者是not officially supported yet.
python 3 上的 ansible 2.4.0 中存在错误(试图在字符串列表中找到 .yml
字节)。
此错误已在本次提交 https://github.com/ansible/ansible/commit/72bdf7aa7e1b867380201092dff65338d59cd8fa 中修复,可能会作为 2.4.1 发布。
删除清单文件并在 ansible 控制器上重新创建它为我修复了它。