Custom inventory file failing to parse properly
Solution 1
The keyword hosts
is missing. Also colons :
are needed after the hostnames. Fix the syntax, for example
all:
children:
control:
hosts:
moriarty.server.com:
toby.server.com:
managed:
hosts:
sherlock.server.com:
See How to build your inventory.
Solution 2
Just add hosts
before every block of hosts.
I.e., under the group level, you should have hosts
directive
See ansible source code example:
- Hosts must be specified in a group's hosts:
Working inventory.yml:
all:
children:
control:
hosts:
localhost
127.0.0.1
managed:
hosts:
localhost
Related videos on Youtube
Lucky The Rabbit
Updated on September 18, 2022Comments
-
Lucky The Rabbit over 1 year
I've got the following production inventory file (
playbooks/production.yaml
) for Ansible:all: children: control: moriarty.server.com toby.server.com managed: sherlock.server.com
Based on what I'm reading online, it looks like it should be correct, and I can't find any syntax errors in the file using a YAML linter. However, when I run
ansible-playbook
on my local machine, I get the following error:$ ansible-playbook -i playbooks/production.yaml --extra-vars target=moriarty.server.com playbooks/create-server.yaml [WARNING]: log file at /var/log/ansible.log is not writeable and we cannot create it, aborting [WARNING]: Skipping 'control' as this is not a valid group definition [WARNING]: * Failed to parse /Users/username/infra/playbooks/production.yaml with auto plugin: no root 'plugin' key found, '/Users/username/infra/playbooks/production.yaml' is not a valid YAML inventory plugin config file [WARNING]: * Failed to parse /Users/username/infra/playbooks/production.yaml with yaml plugin: control is not a known host nor group [WARNING]: * Failed to parse /Users/username/infra/playbooks/production.yaml 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 /Users/username/infra/playbooks/production.yaml 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: moriarty.server.com PLAY [moriarty.server.com] ************************************************************************************************************************************************ skipping: no hosts matched PLAY RECAP **************************************************************************************************************************************************************************
I'm at a loss, since it looks to be valid YAML. Do I need to format it some other way when I have groups in this manner?
-
Lucky The Rabbit about 4 yearsPerfect, thanks!