First of all failed_when doesn't work for vars_prompt only for tasks..
here is what you could do :
- hosts: all
any_errors_fatal: yes
vars_prompt:
name: "confirmation"
prompt: "Are you sure you want to run this playbook? Answer with 'YES'"
default: "NO"
private: no
tasks:
- name: Check Confirmation
fail: msg="Playbook run confirmation failed"
when: confirmation != "YES"
note the use of any_errors_fatal, this is important because otherwise the
check task will only fail for the current host only, this makes the whole
playbook fails on any errors.
problem with this is that it's not foolproof for instance if you did
confirm the run and any of your tasks failed, it'd fail the whole playbook
as opposed to the default behavior of taking out the just the host that
failed.
the only way to counter this is to use when: confirmation == "YES" in all
your tasks, instead of using a primary "Fail Task", a bit ugly but a safer
route depending on your use case.
also if you go the "Fail Task" route keep in mind that this won't work if
your playbook uses roles, in this case use a pre_tasks instead of a normal
tasks.
On Friday, August 1, 2014 7:13:11 PM UTC+2, maticm1 wrote:
>
> How do you set up a confirmation prompt before running a playbook?
>
> I'd like to have to enter "YES" before the playbook makes any changes to
> hosts. Right now I have the following code in site.yml, but it's not
> working.
>
> vars_prompt:
> - name: "confirmation"
> prompt: "Are you sure you want to run this playbook? Answer with
> 'YES'"
> default: "NO"
> private: no
> failed_when: "confirmation != YES"
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/600eb96a-95cd-46c1-ad9e-8293b97457b6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.