--- # tasks file for test_ec2_elb # ============================================================ # create an ELB for testing - name: create the test load balancer ec2_elb_lb: name: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" state: present zones: - "{{ ec2_region }}b" - "{{ ec2_region }}c" listeners: - protocol: http load_balancer_port: 80 instance_port: 80 health_check: ping_protocol: http ping_port: 80 ping_path: "/index.html" response_timeout: 5 interval: 10 unhealthy_threshold: 3 healthy_threshold: 2 register: result - name: assert the test load balancer was created correctly assert: that: - 'result.changed' - '"failed" not in result' - 'result.elb.status == "created"' - '"{{ ec2_region }}b" in result.elb.zones' - '"{{ ec2_region }}c" in result.elb.zones' - 'result.elb.health_check.healthy_threshold == 2' - 'result.elb.health_check.interval == 10' - 'result.elb.health_check.target == "HTTP:80/index.html"' - 'result.elb.health_check.timeout == 5' - 'result.elb.health_check.unhealthy_threshold == 3' - '[80, 80, "HTTP", "HTTP"] in result.elb.listeners' # ============================================================ # add one of the instances to the LB - name: add first instance to the load balancer ec2_elb: ec2_elbs: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" instance_id: "{{ ec2_provision_result.instance_ids[0] }}" state: present wait_timeout: 300 register: result - name: assert the first instance was added ok assert: that: - 'result.changed == True' - '"{{resource_prefix}}" in result.ansible_facts.ec2_elbs' # ============================================================ # add all other instances to the LB - name: add other instances to the load balancer ec2_elb: ec2_elbs: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" instance_id: "{{ item }}" state: present wait_timeout: 300 with_items: "ec2_provision_result.instance_ids[1:]" register: result - name: assert the other instances were added ok assert: that: - 'item.changed == True' - '"{{resource_prefix}}" in item.ansible_facts.ec2_elbs' with_items: result.results # ============================================================ # shutdown http first instance so it goes out of service - name: "shutdown the apache service on the first instance ({{ec2_provision_result.instances[0].public_ip}})" service: name=httpd state=stopped remote_user: "ec2-user" become: yes become_user: root delegate_to: "{{ec2_provision_result.instances[0].public_ip}}" - name: assert that the httpd service was stopped assert: that: - 'result.changed == True' - name: pause long enough for the instance to go out of service pause: seconds=60 # ============================================================ # remove the out of service instance - name: remove the out of service instance ec2_elb: ec2_elbs: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" instance_id: "{{ ec2_provision_result.instance_ids[0] }}" state: absent wait_timeout: 300 register: result - name: assert that the out of service instance was removed assert: that: - 'result.changed == True' - '"{{resource_prefix}}" in result.ansible_facts.ec2_elbs' # ============================================================ # remove another instance that is still in service - name: remove the second instance ec2_elb: ec2_elbs: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" instance_id: "{{ ec2_provision_result.instance_ids[1] }}" state: absent wait_timeout: 300 register: result - name: assert that the second instance was removed assert: that: - 'result.changed == True' - '"{{resource_prefix}}" in result.ansible_facts.ec2_elbs' # ============================================================ # re-register the second instance (issue #4902) - name: re-register the second instance (issue #4902) ec2_elb: ec2_elbs: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" instance_id: "{{ ec2_provision_result.instance_ids[1] }}" state: present wait_timeout: 300 register: result - name: assert the instance was re-registered ok assert: that: - 'result.changed == True' - '"{{resource_prefix}}" in result.ansible_facts.ec2_elbs' # ============================================================ # remove all other instances - name: remove the rest of the instances ec2_elb: ec2_elbs: "{{ resource_prefix }}" ec2_access_key: "{{ ec2_access_key }}" ec2_secret_key: "{{ ec2_secret_key }}" region: "{{ ec2_region }}" instance_id: "{{ item }}" state: absent wait_timeout: 300 with_items: "ec2_provision_result.instance_ids[1:]" register: result - name: assert the other instances were removed assert: that: - 'item.changed == True' - '"{{resource_prefix}}" in item.ansible_facts.ec2_elbs' with_items: result.results