Not sure if I'm doing this wrong or not, so I figured I'd ask.
I have a playbook to apply a role, but the role has a conditional. If the
conditional evaluates to false, the role should be skipped.
# service.yml
---
- name: Create EC2 Instances
gather_facts: False
hosts: local
vars_files:
- vars/defaults.yml
- vars/{{deploy_env}}.yml
- vars/{{region}}.yml
- vars/{{service}}.yml
roles:
- ec2-box
- { role: ec2-elb, when: elb }
In this case elb is set to false, so all the tasks in the ec2-elb role
should be skipped.
However, I also run the playbook using tags.
ansible-playbook -vvvv -i hosts service.yml --tags configure,start -e
service=myservice
And all of the tasks in ec2-elb have tags assigned:
# roles/ec2-elb/tasks/main.yml
---
- name: Create ELB
local_action:
module: ec2_elb_lb
name: "{{deploy_env}}-{{service}}"
state: present
cross_az_load_balancing: yes
security_group_ids: "{{sg_ids}}"
region: "{{region}}"
subnets:
- {{public_vpc_subnet_a}}
- {{public_vpc_subnet_a}}
- {{public_vpc_subnet_a}}
listeners:
- protocol: https
load_balancer_port: 443
instance_protocol: http
instance_port: "{{service_port}}"
ssl_certificate_id: "{{ssl_cert_arn}}"
health_check:
ping_protocol: http
ping_port: 6990
ping_path: "/1.0/status"
response_timeout: 5
interval: 10
unhealthy_threshold: 2
healthy_threshold: 2
register: elb
tags:
- configure
- start
- stop
- restart
- name: Wait Until ELB Responds
local_action:
module: wait_for
host: "{{elb.elb.dns_name}}"
port: 443
timeout: 300
tags:
- start
- configure
- restart
Given this approach, I would expect that if elb evalutates to False or
undefined, the ec2-elb role would be skipped.
Unfortunately, It seems the tasks within the ec2-elb role still attempt to
execute based off the tags:
TASK: [ec2-elb | Create ELB]
**************************************************
skipping: [localhost -> 127.0.0.1]
TASK: [ec2-elb | Wait Until ELB Responds]
*************************************
fatal: [localhost -> 127.0.0.1] => error while evaluating conditional:
{u'skipped': True, u'changed': False}
FATAL: all hosts have already failed -- aborting
PLAY RECAP
********************************************************************
to retry, use: --limit @/home/mmorgan/service.retry
localhost : ok=5 changed=1 unreachable=1 failed=0
Am I doing something wrong here, or is this a bug?
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/9817e427-0d4d-4732-9e1f-0022396d41a8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.