I want to define the target hosts for my playbooks somewhere in the inventory itself. But apparently, Ansible is resolving target hosts before it is finished loading the inventory. When i 'include' the file with these vars, it works just fine.
inventoryFile.yaml
[machines]
one ansible_host=000
two ansible_host=000
three ansible_host=000
group_vars/all/targets.yamlhostList1:
- one
- two
hostList2:
- two
- three
playbook.yaml---
- hosts: "{{hostList1}}"
tasks:
- debug: msg="works"
Error:
ERROR! the field 'hosts' has an invalid value, which appears to include a variable that is undefined. The error was: 'hostList1' is undefined
The error appears to have been in '/home/ishan/playbook.yaml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- name: Executing playbook
^ here
But if i explicitly load the same file, it works just fine:
playbook.yaml
---
- name: Executing playbook
hosts: "{{hostList1}}"
vars_files:
- "{{ inventory_dir ~ '/group_vars/all/targets.yaml'}}"
tasks:
- debug: msg="works"
Clearly, Ansible is loading/resolving host list too fast. I really don't want to explicitly load the vars file. I need that to be in inventory and loading it again is not a good thing. How can i make sure that some vars are loaded with the inventory first thing when i execute a playbook ?
Please note that there might be some typos when i am specifying files and code above, but this is really not a problem of typos.