]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
mon: destroy and recreate rbd pool if necessary 1043/head
authorSébastien Han <seb@redhat.com>
Thu, 20 Oct 2016 16:19:19 +0000 (18:19 +0200)
committerSébastien Han <seb@redhat.com>
Fri, 21 Oct 2016 23:31:15 +0000 (01:31 +0200)
Users reported that pool_default_pg_num is not honoured for the default
pool 'rbd'. So now we check the pg num value for the RBD pool and if it
does not match pool_default_pg_num then we delete and recreate it.
We also make sure the pool is empty first, just in case someone changed
the value manually and didn't reflect the change in ceph-ansible.

The only issue with this patch is that the pool ID will not be 0 anymore
but more likely 1.

Signed-off-by: Sébastien Han <seb@redhat.com>
roles/ceph-mon/tasks/ceph_keys.yml
roles/ceph-mon/tasks/rbd_pool.yml [new file with mode: 0644]

index 0a34c4572445c28d40acf1f9ba385f0ee35aa0a9..8f3e0d6a3553ee8598e9435120719770c43b55ff 100644 (file)
@@ -15,6 +15,9 @@
     - cephx
     - groups[restapi_group_name] is defined
 
+- include: rbd_pool.yml
+  when: ceph_conf_overrides.global.osd_pool_default_pg_num is defined
+
 - include: openstack_config.yml
   when: openstack_config
 
diff --git a/roles/ceph-mon/tasks/rbd_pool.yml b/roles/ceph-mon/tasks/rbd_pool.yml
new file mode 100644 (file)
index 0000000..355eca2
--- /dev/null
@@ -0,0 +1,24 @@
+---
+- name: check rbd pool usage
+  shell: |
+    ceph --connect-timeout 5 --cluster {{ cluster }} df | awk '/rbd/ {print $3}'
+  changed_when: false
+  failed_when: false
+  register: rbd_pool_df
+
+- name: check pg num for rbd pool
+  shell: |
+    ceph --connect-timeout 5 --cluster {{ cluster }} osd pool get rbd pg_num | awk '{print $2}'
+  changed_when: false
+  failed_when: false
+  register: rbd_pool_pgs
+
+- name: destroy and recreate rbd pool if osd_pool_default_pg_num is not honoured
+  shell: |
+    ceph --connect-timeout 5 --cluster {{ cluster }} osd pool rm rbd rbd --yes-i-really-really-mean-it
+    ceph --connect-timeout 5 --cluster {{ cluster }} osd pool create rbd {{ ceph_conf_overrides.global.osd_pool_default_pg_num }}
+  changed_when: false
+  failed_when: false
+  when:
+    - rbd_pool_df.stdout == "0"
+    - rbd_pool_pgs.stdout != "{{ ceph_conf_overrides.global.osd_pool_default_pg_num }}"