To follow up here, since this was worked out in IRC.  The solution to getting 
this working is to change the role statement to look something like the 
following:

   - { role: role_2, when: role_2|default(’no’) == 'yes’ }

-- 
Matt Martz
[email protected]

On December 19, 2013 at 5:00:26 PM, Matt Cleveland ([email protected]) 
wrote:

Hello all,

I'm trying to execute roles in a playbook conditionally.  The conditions are 
based on command line args as passed through "--extra-vars".  I've tried 
several things and none work.  Here are a few examples:

- hosts: ec2hosts
  user: ubuntu
  roles:
   - common
   - { role: role_1, when: "{{role_1}} == 'yes'" }
   - { role: role_2, when: "{{role_2}} == 'yes'" }

When I run the above with "role_1=no" in extra-vars the role is still executed. 
 Here is the debug output from the above:

TASK: [common | print 2] ****************************************************** 
<X.X.X.X> ESTABLISH CONNECTION FOR USER: ubuntu
ok: [X.X.X.X] => {
    "item": "", 
    "msg": "role_1_matt no"
}




- hosts: ec2hosts
  user: ubuntu
  roles:
   - common
   - { role: role_1, when: "{{role_1}} is defined" }
   - { role: role_2, when: "{{role_2}} is defined" }

When I run the above with "role_1" omitted from extra-vars it is still run.  
The debug output from the latter scenario is this:

TASK: [common | print] ******************************************************** 
<X.X.X>X> ESTABLISH CONNECTION FOR USER: ubuntu
ok: [X.X.X.X] => {
    "item": "", 
    "msg": "role_1_matt {{role_1}}"
}


Any help is greatly appreciated, thanks!
--
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].
For more options, visit https://groups.google.com/groups/opt_out.

-- 
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].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to