diff options
| author | Jeffrey Zhang <jeffrey.zhang@99cloud.net> | 2016-03-20 22:40:04 +0800 |
|---|---|---|
| committer | Jeffrey Zhang <jeffrey.zhang@99cloud.net> | 2016-03-29 18:05:48 +0800 |
| commit | f7066db4f0472d37233f2e854ab97ddb7781118b (patch) | |
| tree | 0ecf563f9318f364f7f196232dac403d274768c9 | |
| parent | 90321d0497f14bda370908610cfc44296a940523 (diff) | |
| download | kolla-f7066db4f0472d37233f2e854ab97ddb7781118b.tar.gz kolla-f7066db4f0472d37233f2e854ab97ddb7781118b.zip | |
Fix the Ceph reconfigure
Closes-Bug: #1563251
Change-Id: I0072c92d6c8160f868b4ab0ec08b11541d3f3401
| -rw-r--r-- | ansible/roles/ceph/tasks/do_reconfigure.yml | 185 |
1 files changed, 127 insertions, 58 deletions
diff --git a/ansible/roles/ceph/tasks/do_reconfigure.yml b/ansible/roles/ceph/tasks/do_reconfigure.yml index e74d8e2f9..7d18527f0 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: 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: 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'] + +- 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} -# 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: 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: ceph_rgw, group: ceph-rgw } -- name: Containers config strategy for the ceph_osd container +- name: Containers config strategy for the ceph_osd containers kolla_docker: - name: "ceph_osd_{{ item.0.stdout }}" + name: "ceph_osd_{{ item.stdout }}" action: "get_container_env" - with_together: - - id.results + register: ceph_osd_container_envs + with_items: osd_ids.results + when: + - inventory_hostname in groups['ceph-osd'] - osds - when: osds -- name: Remove the ceph_mon and ceph_rgw containers +- 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: 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 + +- 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: deploy.yml - when: remove_containers.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 |
