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.

Reply via email to