Vars_prompt in playbooks
vars_prompt
are bound to specific play, so you can't use them in other plays directly. Though you can use set_fact
in the first play to set a fact for some host, and access it in later plays via hostvars
.
Prompts are executed in the beginning of every play, it doesn't matter where you place vars_prompt
block - before or after tasks
section (it is a YAML dictionary after all, where sequence of keys doesn't mean anything).
I'd suggest not to use prompts at all, if you need some external data, pass it via extra variables.
Related videos on Youtube
Comments
-
Luv33preet almost 2 years
This is my playbook,
--- - hosts: alpha vars: company: vogo tasks: - name: debugging debug: msg: "{{ansible_hostname}}" vars_prompt: - name: "company" prompt: "Where do you work" private: no - hosts: webservers vars_prompt: - name: "fathercompany" prompt: "Where your father works" private: no tasks: - name: test debug: msg: just testing "{{company2}}"
Here are the steps of execution flow when I run the playbook,
1 - prompt 1 (Where do you work)
2 - task debugging
3 - prompt 2 (Where your father works)
4 - task test
I have some questions.
First, When I run this playbook, the task "debugging" should run first and then the prompt should ask for the company name. But, when I run this playbook, at the very first step, it asks for "Where do you work ?". Why prompt first ? Am I missing some kind of paramater which I should have passed ?
Second, I have put 2 prompts here,
I want to use the prompt value
company
, in thewebservers
host block. But it gives me error when I try to do that.Cannot I use the prompt value from one host block into another ?
Third,
How can I use prompts in roles ?
-
hrbdg over 5 yearsPrompts are usually best for sensitive data such as passwords that are best left off of disk, out of command line arguments, and out of environment variables when possible.