Pass array in –extra-vars – Ansible

Question:

How can I pass yaml array to --extra-vars in Ansible playbook. Ansible documentation does not declares its syntax nor I can find that on any internet resource.

I mean if I have a playbook:

Then I should call my playbook like

ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"

But I want to run this playbook on two servers say tomcat-webApp and tomcat-all, and I want to control it from out side i.e. using --extra-vars. What I have tried to do is:

But in all cases playbook fails declaring a syntax error in my call.
Any help appreciated.

Answer:

To answer your first question “How can I pass yaml array to –extra-vars in Ansible playbook.”
you can pass in a json formatted string to extra-vars.

Here is an example play:

And how to pass in test_list to ansible-playbook:

Though you can use a variable for hosts I recommend checking out Ansible’s mechanism for host management which is inventory in conjunction with the --limit option.

Leave a Reply