I believe this is because variables set via vars_prompt are always defined.
A workaround might be to set a default for revision_no and check it doesn’t
match in your role, e.g.:
vars_prompt:
- name: “revision_no"
prompt: "Input revision number”
default: “invalid”
private: no
…..
roles:
- { role: web, when: revision_no != “invalid” }
I’ve not made extensive use of roles so it seems odd to me that a role would
still execute when a failure is thrown but it must have something to do with
Ansible’s order of execution.
--
Garrett Plasky
Evernote Operations
On Wednesday, May 7, 2014 at 2:02 PM, Samnang Sen wrote:
> So, here's the full site.yml file. If I dont input a revision number (I hit
> enter at the prompt), it throws the error message as expected BUT it also
> executes the role. I want it to bomb out w/ the error msg and not continue.
>
>
> ---
> - hosts: webservers
> user: deployment
> # serial: 1
>
> vars_prompt:
> - name: "revision_no"
> prompt: "Input revision number"
> private: no
>
> vars_files:
> - "group_vars/deploy_list"
>
> tasks:
> - name: Checking for required variables
> fail: msg="Playbook execution failed - 'revision_no' is required!"
> when: not revision_no
>
> roles:
> - { role: web, when: revision_no is defined }
>
>
> On Monday, May 5, 2014 1:19:05 PM UTC-4, Garrett Plasky wrote:
> > There may be a better way to do this but I solved the problem by having a
> > separate task initially that verifies the variable is set and fails the
> > play if not (via the fail module).
> >
> > - name: Checking for required variables
> > fail: msg="Playbook execution failed - 'revision_no' is required!"
> > when: not revision_no
> >
> > If you don't want the play to outright fail, you could replace the fail
> > module with something like debug.
> > On Monday, May 5, 2014 7:58:27 AM UTC-7, Samnang Sen wrote:
> > > That last line is supposed to read "revision_no is defined"
> > >
> > > On Monday, May 5, 2014 10:53:54 AM UTC-4, Samnang Sen wrote:
> > > > Let's say I ask for a revision_no from the user. If the user doesn't
> > > > input a value, I would like to display a custom message. Right now
> > > > ansible shows a bunch of "skipping" message, but I know my users would
> > > > want to know why it skipped.
> > > >
> > > > - hosts: webservers
> > > > user: deployment
> > > > # serial: 1
> > > >
> > > >
> > > > vars_prompt:
> > > > - name: "revision_no"
> > > > prompt: "Input revision number"
> > > > private: no
> > > >
> > > > vars_files:
> > > > - "group_vars/deploy_list"
> > > >
> > > > roles:
> > > > - { role: web, when: revision_no is not defined }
> > > >
> --
> You received this message because you are subscribed to a topic in the Google
> Groups "Ansible Project" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/ansible-project/JJWv3IWtWwU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected]
> (mailto:[email protected]).
> To post to this group, send email to [email protected]
> (mailto:[email protected]).
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/efad2eb5-9e3a-4ce4-8ec0-37329073849f%40googlegroups.com
>
> (https://groups.google.com/d/msgid/ansible-project/efad2eb5-9e3a-4ce4-8ec0-37329073849f%40googlegroups.com?utm_medium=email&utm_source=footer).
> For more options, visit https://groups.google.com/d/optout.
--
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/F3F7ECA81A47421A8D9B376F3385BF01%40evernote.com.
For more options, visit https://groups.google.com/d/optout.