From f7066db4f0472d37233f2e854ab97ddb7781118b Mon Sep 17 00:00:00 2001 From: Jeffrey Zhang Date: Sun, 20 Mar 2016 22:40:04 +0800 Subject: [PATCH] Fix the Ceph reconfigure Closes-Bug: #1563251 Change-Id: I0072c92d6c8160f868b4ab0ec08b11541d3f3401 --- ansible/roles/ceph/tasks/do_reconfigure.yml | 191 +++++++++++++------- 1 file changed, 130 insertions(+), 61 deletions(-) diff --git a/ansible/roles/ceph/tasks/do_reconfigure.yml b/ansible/roles/ceph/tasks/do_reconfigure.yml index e74d8e2f95..7d18527f0e 100644 --- a/ansible/roles/ceph/tasks/do_reconfigure.yml +++ b/ansible/roles/ceph/tasks/do_reconfigure.yml @@ -1,145 +1,214 @@ --- -- name: Ensuring the containers ceph_mon and ceph_rgw are up +- name: Ensuring the ceph_mon container is up kolla_docker: name: "{{ item.name }}" action: "get_container_state" - register: container_state + register: ceph_mon_container_state failed_when: container_state.Running == false when: inventory_hostname in groups[item.group] with_items: - { name: ceph_mon, group: ceph-mon } - - { name: ceph_rgw, group: ceph-rgw } + +- name: Looking up OSDs for Ceph + command: docker exec -t kolla_toolbox /usr/bin/ansible localhost + -m find_disks + -a "partition_name='KOLLA_CEPH_DATA' match_mode='prefix'" + register: osd_lookup + changed_when: "{{ osd_lookup.stdout.find('localhost | SUCCESS => ') != -1 and (osd_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" + failed_when: osd_lookup.stdout.split()[2] != 'SUCCESS' + when: inventory_hostname in groups['ceph-osd'] + +- name: Reading data from variable + set_fact: + osds: "{{ (osd_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).disks|from_json }}" + when: inventory_hostname in groups['ceph-osd'] - name: Gathering OSD IDs command: "cat /var/lib/ceph/osd/{{ item['fs_uuid'] }}/whoami" with_items: osds - register: id + register: osd_ids changed_when: False - failed_when: id.rc != 0 + failed_when: osd_ids.rc != 0 + when: inventory_hostname in groups['ceph-osd'] - name: Ensuring the ceph_osd container is up kolla_docker: - name: "ceph_osd_{{ item.0.stdout }}" + name: "ceph_osd_{{ item.stdout }}" action: "get_container_state" - register: container_state + register: ceph_osd_container_state + failed_when: ceph_osd_container_state.Running == false + when: inventory_hostname in groups['ceph-osd'] + with_items: osd_ids.results + +- name: Ensuring the ceph_rgw container is up + kolla_docker: + name: "{{ item.name }}" + action: "get_container_state" + register: ceph_rgw_container_state failed_when: container_state.Running == false - with_together: - - id.results - - osds - when: osds + when: + - enable_ceph_rgw | bool + - inventory_hostname in groups[item.group] + with_items: + - { name: ceph_rgw, group: ceph-rgw } - include: config.yml -- name: Check the configs in ceph_mon and ceph_rgw containers +- name: Check the configs in ceph_mon container command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check changed_when: false failed_when: false - register: check_results + register: ceph_mon_check_results when: inventory_hostname in groups[item.group] with_items: - { name: ceph_mon, group: ceph-mon } - - { name: ceph_rgw, group: ceph-rgw } - name: Check the configs in the ceph_osd container - command: docker exec ceph_osd_{{ item.0.stdout }} /usr/local/bin/kolla_set_configs --check + command: docker exec ceph_osd_{{ item.stdout }} /usr/local/bin/kolla_set_configs --check changed_when: false failed_when: false - with_together: - - id.results - - osds - when: osds + register: ceph_osd_check_results + with_items: osd_ids.results + when: inventory_hostname in groups['ceph-osd'] -# NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS' -# and container env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE', -# just remove the container and start again -- name: Containers config strategy for ceph_mon and ceph_rgw containers +- name: Check the configs in ceph_rgw container + command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check + changed_when: false + failed_when: false + register: ceph_rgw_check_results + when: + - inventory_hostname in groups[item.group] + - enable_ceph_rgw | bool + with_items: + - { name: ceph_rgw, group: ceph-rgw} + +- name: Containers config strategy for ceph_mon container kolla_docker: name: "{{ item.name }}" action: "get_container_env" - register: container_envs + register: ceph_mon_container_envs when: inventory_hostname in groups[item.group] with_items: - { name: ceph_mon, group: ceph-mon } + +- name: Containers config strategy for the ceph_osd containers + kolla_docker: + name: "ceph_osd_{{ item.stdout }}" + action: "get_container_env" + register: ceph_osd_container_envs + with_items: osd_ids.results + when: + - inventory_hostname in groups['ceph-osd'] + - osds + +- name: Containers config strategy for ceph_rgw container + kolla_docker: + name: "{{ item.name }}" + action: "get_container_env" + register: ceph_rgw_container_envs + when: + - inventory_hostname in groups[item.group] + - enable_ceph_rgw | bool + with_items: - { name: ceph_rgw, group: ceph-rgw } -- name: Containers config strategy for the ceph_osd container - kolla_docker: - name: "ceph_osd_{{ item.0.stdout }}" - action: "get_container_env" - with_together: - - id.results - - osds - when: osds - -- name: Remove the ceph_mon and ceph_rgw containers +- name: Remove the ceph_mon container kolla_docker: name: "{{ item[0]['name'] }}" action: "remove_container" - register: remove_containers + register: remove_ceph_mon_container when: + - inventory_hostname in groups[item[0]['group']] - 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: ceph_mon, group: ceph-mon }, - { name: ceph_rgw, group: ceph-rgw }] - - container_envs.results - - check_results.results + - [{ name: ceph_mon, group: ceph-mon }] + - ceph_mon_container_envs.results + - ceph_mon_check_results.results -- name: Remove the ceph_osd container +- name: Remove the ceph_osd containers kolla_docker: name: "ceph_osd_{{ item.0.stdout }}" action: "remove_container" + register: remove_ceph_osd_containers when: - - config_strategy == "COPY_ONCE" or item[2]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE' - - item[3]['rc'] == 1 + - inventory_hostname in groups['ceph-osd'] + - config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE' + - item[2]['rc'] == 1 - osds with_together: - - id.results - - osds - - container_envs.results - - check_results.results + - osd_ids.results + - ceph_osd_container_envs.results + - ceph_osd_check_results.results -- include: deploy.yml - when: remove_containers.changed +- name: Remove the ceph_rgw container + kolla_docker: + name: "{{ item[0]['name'] }}" + action: "remove_container" + register: remove_ceph_rgw_container + when: + - enable_ceph_rgw | bool + - inventory_hostname in groups[item[0]['group']] + - config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE' + - item[2]['rc'] == 1 + with_together: + - [{ name: ceph_rgw, group: ceph-rgw }] + - ceph_rgw_container_envs.results + - ceph_rgw_check_results.results + +- include: start_mons.yml + when: + - inventory_hostname in groups['ceph-mon'] + - remove_ceph_mon_container.changed + +- include: start_osds.yml + when: + - inventory_hostname in groups['ceph-osd'] + - remove_ceph_osd_containers.changed + +- include: start_rgws.yml + when: + - inventory_hostname in groups['ceph-rgw'] + - remove_ceph_rgw_container.changed - name: Restart the ceph_mon container kolla_docker: name: "ceph_mon" action: "restart_container" when: + - inventory_hostname in groups['ceph-mon'] - config_strategy == 'COPY_ALWAYS' - item[0]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' - item[1]['rc'] == 1 - - inventory_hostname in groups['ceph-mon'] with_together: - - container_envs.results - - check_results.results + - ceph_mon_container_envs.results + - ceph_mon_check_results.results - name: Restart the ceph_osd container kolla_docker: name: "ceph_osd_{{ item.0.stdout }}" action: "restart_container" when: + - inventory_hostname in groups['ceph-osd'] - config_strategy == 'COPY_ALWAYS' - - item[2]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' - - item[3]['rc'] == 1 + - item[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' + - item[2]['rc'] == 1 - osds with_together: - - id.results - - osds - - container_envs.results - - check_results.results + - osd_ids.results + - ceph_osd_container_envs.results + - ceph_osd_check_results.results - name: Restart the ceph_rgw container kolla_docker: name: "ceph_rgw" action: "restart_container" when: + - enable_ceph_rgw | bool + - inventory_hostname in groups['ceph-rgw'] - config_strategy == 'COPY_ALWAYS' - item[0]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' - item[1]['rc'] == 1 - - inventory_hostname in groups['ceph-rgw'] with_together: - - container_envs.results - - check_results.results + - ceph_rgw_container_envs.results + - ceph_rgw_check_results.results