When deploying a large number of OSD nodes it can be an issue because the
protection check [1] won't pass since it tries to create pools before all
OSDs are active.
The idea here is to move cephfs pools creation in `ceph-mds` role.
[1] https://github.com/ceph/ceph/blob/
e59258943bcfe3e52d40a59ff30df55e1e6a3865/src/mon/OSDMonitor.cc#L5673
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1578086
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit
3a0e168a76beaf8fb43c6afa56c6cf2b634a8aa8)
Signed-off-by: Sébastien Han <seb@redhat.com>
--- /dev/null
+---
+- name: create filesystem pools
+ command: "{{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd pool create {{ item.name }} {{ item.pgs }}"
+ changed_when: false
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ with_items:
+ - "{{ cephfs_pools }}"
+
+- name: check if ceph filesystem already exists
+ command: "{{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} fs get {{ cephfs }}"
+ register: check_existing_cephfs
+ changed_when: false
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ failed_when: false
+
+- name: create ceph filesystem
+ command: "{{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} fs new {{ cephfs }} {{ cephfs_metadata }} {{ cephfs_data }}"
+ changed_when: false
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ when:
+ - check_existing_cephfs.rc != 0
+
+- name: allow multimds
+ command: "{{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} fs set {{ cephfs }} allow_multimds true --yes-i-really-mean-it"
+ changed_when: false
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ when:
+ - ceph_release_num[ceph_release] >= ceph_release_num.jewel
+ - ceph_release_num[ceph_release] < ceph_release_num.mimic
+
+- name: set max_mds
+ command: "{{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds {{ mds_max_mds }}"
+ changed_when: false
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ when:
+ - ceph_release_num[ceph_release] >= ceph_release_num.jewel
+ - mds_max_mds > 1
- name: include common.yml
include: common.yml
+- name: include create_mds_filesystems.yml
+ include: create_mds_filesystems.yml
+ when:
+ - inventory_hostname == groups[mds_group_name] | first
+
- name: non_containerized.yml
include: non_containerized.yml
when: not containerized_deployment
+++ /dev/null
----
-- name: create filesystem pools
- command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} osd pool create {{ item.name }} {{ item.pgs }}"
- changed_when: false
- with_items:
- - "{{ cephfs_pools }}"
-
-- name: check if ceph filesystem already exists
- command: "{{docker_exec_cmd }} ceph --cluster {{ cluster }} fs get {{ cephfs }}"
- register: check_existing_cephfs
- changed_when: false
- failed_when: false
-
-- name: create ceph filesystem
- command: "{{ docker_exec_cmd}} ceph --cluster {{ cluster }} fs new {{ cephfs }} {{ cephfs_metadata }} {{ cephfs_data }}"
- changed_when: false
- when:
- - check_existing_cephfs.rc != 0
-
-- name: allow multimds
- command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} fs set {{ cephfs }} allow_multimds true --yes-i-really-mean-it"
- changed_when: false
- when:
- - ceph_release_num[ceph_release] >= ceph_release_num.jewel
- - ceph_release_num[ceph_release] < ceph_release_num.mimic
-
-- name: set max_mds
- command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds {{ mds_max_mds }}"
- changed_when: false
- when:
- - ceph_release_num[ceph_release] >= ceph_release_num.jewel
- - mds_max_mds > 1
when:
- openstack_keys_tmp is defined
-- name: include create_mds_filesystems.yml
- include: create_mds_filesystems.yml
- when:
- - groups[mds_group_name] is defined
- - groups[mds_group_name]|length > 0
- - inventory_hostname == groups[mon_group_name] | last
-
- name: include calamari.yml
include: calamari.yml
when: calamari
include: openstack_config.yml
when:
- openstack_config
- - inventory_hostname == groups[osd_group_name] | last
\ No newline at end of file
+ - inventory_hostname == groups[osd_group_name] | last