How to use --extra-vars option to pass host variables in ansible-playbook

We have an requirement to pass the host variables defined in a file under host_vars directory as an argument to the ansible playbook. So we have planned to use –extra-vars option to pass additional variables as key value pair. But we couldn’t able to pass the host variables as argument and I couldn’t find any proper documentation for this use case.

Could anyone give me a solution for this problem.

host_vars do not need to be passed, they are picked up automatically, you would be ‘double passing them’ by adding them to the command line.

Thanks Brain for your reply.

We are not planning to have the yaml or json file under host_vars directory. Instead we are passing as arguments in the command line.

Could you please share me some examples or documentation to pass host variables.

Then don’t they just become normal variables that you’d use in your playbooks?

Alex

Yes. If I give the arguments as below, then it would be normal variables or global variables.

ansible-playbook -i hosts xxxx.yaml --extra-vars ‘{“management_interface”:{“int”: “em0”,“ip”: “192.168.56.3”}}’

But I’m looking for an option in ansible-playbook where we could pass the host variables specific to the particular host as follows.

ansible-playbook -i hosts xxxx.yaml --extra-vars ‘{“hostvars[‘host1’]”:{“management_interface”:{“int”: “em0”,“ip”: “192.168.56.3”}}}’

The content in hosts file is as below:

[vdc1-host1]
host1

[vdc1-host2]
host2

[vdc1:children]
vdc1-host1
vdc1-host2

[sites:children]
vdc1

[all:children]
sites

Please let me know if you have any queries.

Have you considered other ways of specifying that information, such as a dynamic inventory script, or a custom facts module?

Tom

No. I don’t have idea in specifying it as dynamic inventory script or custom facts module.

Could you please provide me an examples or documentation.