diff --git a/ansible/roles/haproxy/tasks/do_reconfigure.yml b/ansible/roles/haproxy/tasks/do_reconfigure.yml new file mode 100644 index 0000000000..034f28f6cf --- /dev/null +++ b/ansible/roles/haproxy/tasks/do_reconfigure.yml @@ -0,0 +1,74 @@ +--- +- name: Ensuring the containers up + kolla_docker: + name: "{{ item.name }}" + action: "get_container_state" + register: container_state + failed_when: container_state.Running == false + when: inventory_hostname in groups[item.group] + with_items: + - { name: haproxy, group: haproxy } + - { name: keepalived, group: haproxy } + +- include: config.yml + +- name: Check the configs + command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check + changed_when: false + failed_when: false + register: check_results + when: inventory_hostname in groups[item.group] + with_items: + - { name: haproxy, group: haproxy } + - { name: keepalived, group: haproxy } + +- name: Containers config strategy + kolla_docker: + name: "{{ item.name }}" + action: "get_container_env" + register: container_envs + when: inventory_hostname in groups[item.group] + with_items: + - { name: haproxy, group: haproxy } + - { name: keepalived, group: haproxy } + +- name: Remove the containers + kolla_docker: + name: "{{ item[0]['name'] }}" + action: "remove_container" + register: remove_containers + when: + - config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE' + - item[2]['rc'] == 1 + - inventory_hostname in groups[item[0]['group']] + with_together: + - [{ name: haproxy, group: haproxy }, + { name: keepalived, group: haproxy }] + - container_envs.results + - check_results.results + +- include: start.yml + when: remove_containers.changed + +# container_envs.results is a list of two elements, first corresponds to +# haproxy container result and second to keepalived container result and the +# same applicable for check_results.results +- name: Ensuring latest haproxy config is used + command: docker exec haproxy /usr/local/bin/kolla_ensure_haproxy_latest_config + register: status + changed_when: status.stdout.find('changed') != -1 + when: + - config_strategy == 'COPY_ALWAYS' + - container_envs.results[0]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' + - check_results.results[0]['rc'] == 1 + - inventory_hostname in groups['haproxy'] + +- name: Restart keepalived container + kolla_docker: + name: "keepalived" + action: "restart_container" + when: + - config_strategy == 'COPY_ALWAYS' + - container_envs.results[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' + - check_results.results[1]['rc'] == 1 + - inventory_hostname in groups['haproxy'] diff --git a/ansible/roles/haproxy/tasks/reconfigure.yml b/ansible/roles/haproxy/tasks/reconfigure.yml index ed97d539c0..f13bfa5490 100644 --- a/ansible/roles/haproxy/tasks/reconfigure.yml +++ b/ansible/roles/haproxy/tasks/reconfigure.yml @@ -1 +1,4 @@ --- +- include: do_reconfigure.yml + serial: "30%" + when: inventory_hostname in groups['haproxy']