--- - hosts: loadbalancer become: true tasks: - name: verify nginx service command: service nginx status - name: verify nginx is listening on 80 wait_for: port=80 timeout=1 - hosts: webserver become: true tasks: - name: verify apache2 service command: service apache2 status - name: verify apache2 is listening on 80 wait_for: port=80 timeout=1 - hosts: database become: true tasks: - name: verify mysql service command: service mysql status - name: verify mysql is listening on 3306 wait_for: port=3306 timeout=1 - hosts: loadbalancer tasks: - name: verify backend index response uri: url=http://{{item}} return_content=yes loop: "{{ groups.webserver }}" register: app_index - fail: msg="index failed to return content" when: ("Hello, from sunny " ~ item.content ~ "!") not in item.content loop: "{{app_index.results}}" - name: verify backend db response uri: url=http://{{item}}/db return_content=yes loop: "{{ groups.webserver }}" register: app_db - fail: msg="db failed to return content" when: ("Database Connected from " ~ item.content ~ "!") not in item.content loop: "{{app_db.results}}" - hosts: control tasks: - name: get elements from loadbalancer group debug: var=groups.loadbalancer - name: verify end-to-end connectivity to loadbalancer uri: url=http://{{item}} return_content=yes loop: "{{ groups.loadbalancer }}" register: lb_connectivity - fail: msg="index failed to return content" when: ("Hello, from sunny " ~ item.content ~ "!") not in item.content loop: "{{lb_connectivity.results}}" - name: verify end-to-end db response uri: url=http://{{item}}/db return_content=yes loop: "{{ groups.loadbalancer }}" register: lb_db - fail: msg="db failed to return content" when: ("Database Connected from " ~ item.content ~ "!") not in item.content loop: "{{lb_db.results}}"