# Dynamic hosts in playbook with roles

**URL:** <https://forum.ansible.com/t/dynamic-hosts-in-playbook-with-roles/26307>\
**Category:** Ansible Project\
**Tags:** windows, ansible-project\
**Created:** [December 15, 2017, 9:04pm UTC](https://forum.ansible.com/t/dynamic-hosts-in-playbook-with-roles/26307 "2017-12-15T21:04:55Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [December 15, 2017, 9:04pm UTC](https://forum.ansible.com/t/dynamic-hosts-in-playbook-with-roles/26307/1 "2017-12-15T21:04:55Z")

</div>

that is not a valid playbook, you are putting tasks in vars\_prompt,  
they belong in a 'tasks' section, roles also shoudl be at play level:

&nbsp;&nbsp;- name: Enter variables  
&nbsp;&nbsp;&nbsp;&nbsp;hosts: localhost  
&nbsp;&nbsp;&nbsp;&nbsp;gather\_facts: no  
&nbsp;&nbsp;&nbsp;&nbsp;vars\_prompt:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "vsphere\_username"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Enter vSphere Username"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: no  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "vsphere\_password"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Enter vSphere Password"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "vm\_hostname"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Enter Virtual Machine Hostname"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: no  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "vsphere\_template"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Which application do you want to deploy?\n1- Windows  
Server 2012R2\n2- Windows Server 2016\n"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: no  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "java\_selection"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Which Java version do you want to deploy?\n1-  
JDK1.6\n2- JDK1.7\n3- JDK1.8\n"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: no  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "tomcat\_selection"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Which Tomcat version do you want to deploy?\n1-  
Tomcat 7.0\n2- Tomcat 8.5\n3- Tomcat 9.0\n"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: no  
&nbsp;&nbsp;&nbsp;pre\_tasks:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: "Adding virtual machine hostname to inventory"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add\_host:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: "{{ vm\_hostname }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- windows  
&nbsp;&nbsp;&nbsp;roles:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- role: provision  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vsphere\_username: vsphere\_username  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vsphere\_password: vsphere\_password  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vm\_hostname: vm\_hostname  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vsphere\_template: vsphere\_template

Though tasks do not execute before roles, so i used a 'pre\_tasks'  
keyword instead.
