diff --git a/roles/ceph-mds/tasks/create_mds_filesystems.yml b/roles/ceph-mds/tasks/create_mds_filesystems.yml index 027a111c2..d00af283c 100644 --- a/roles/ceph-mds/tasks/create_mds_filesystems.yml +++ b/roles/ceph-mds/tasks/create_mds_filesystems.yml @@ -1,74 +1,74 @@ --- -- name: compile a list of pool names - set_fact: - cephfs_pool_names: "{{ cephfs_pools | map(attribute='name') | list }}" - -- name: check if filesystem pool already exists +- name: check and deploy filesystem pools delegate_to: "{{ groups[mon_group_name][0] }}" block: - - name: get and store list of filesystem pools - command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool ls" - changed_when: false - register: osd_pool_ls + - name: check if filesystem pool already exists + block: + - name: compile a list of pool names + set_fact: + cephfs_pool_names: "{{ cephfs_pools | map(attribute='name') | list }}" - - name: look whether pools to be created are present in the output - set_fact: - fs_pools_created: True - when: osd_pool_ls.stdout_lines | intersect(cephfs_pool_names) | length > 0 + - name: get and store list of filesystem pools + command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool ls" + changed_when: false + register: osd_pool_ls -- name: deploy filesystem pools - when: fs_pools_created is not defined + - name: look whether pools to be created are present in the output + set_fact: + fs_pools_created: True + when: osd_pool_ls.stdout_lines | intersect(cephfs_pool_names) | length > 0 + + - name: deploy filesystem pools + when: fs_pools_created is not defined + block: + - name: create filesystem pools + command: > + {{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} + osd pool create {{ item.name }} + {{ item.pg_num | default(item.pgs) | default(osd_pool_default_pg_num) }} + {{ item.pgp_num | default(item.pgs) | default(item.pg_num) | default(osd_pool_default_pg_num) }} + {{ 'replicated_rule' if not item.rule_name | default('replicated_rule') else item.rule_name | default('replicated_rule') }} + {{ 1 if item.type|default(1) == 'replicated' else 3 if item.type|default(1) == 'erasure' else item.type|default(1) }} + {%- if (item.type | default("1") == '3' or item.type | default("1") == 'erasure') and item.erasure_profile != '' %} + {{ item.erasure_profile }} + {%- endif %} + {{ item.expected_num_objects | default('') }} + changed_when: false + with_items: + - "{{ cephfs_pools }}" + + - name: customize pool size + command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool set {{ item.name }} size {{ item.size | default(osd_pool_default_size) }}" + with_items: "{{ cephfs_pools | unique }}" + changed_when: false + when: item.size | default(osd_pool_default_size) != ceph_osd_pool_default_size + + - name: customize pool min_size + command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool set {{ item.name }} min_size {{ item.min_size | default(osd_pool_default_min_size) }}" + with_items: "{{ cephfs_pools | unique }}" + changed_when: false + when: (item.min_size | default(osd_pool_default_min_size))|int > ceph_osd_pool_default_min_size + + - name: assign application to cephfs pools + command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool application enable {{ item }} cephfs" + with_items: + - "{{ cephfs_data }}" + - "{{ cephfs_metadata }}" + changed_when: false + +- name: check and create ceph filesystem delegate_to: "{{ groups[mon_group_name][0] }}" block: - - name: create filesystem pools - command: > - {{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} - osd pool create {{ item.name }} - {{ item.pg_num | default(item.pgs) | default(osd_pool_default_pg_num) }} - {{ item.pgp_num | default(item.pgs) | default(item.pg_num) | default(osd_pool_default_pg_num) }} - {{ 'replicated_rule' if not item.rule_name | default('replicated_rule') else item.rule_name | default('replicated_rule') }} - {{ 1 if item.type|default(1) == 'replicated' else 3 if item.type|default(1) == 'erasure' else item.type|default(1) }} - {%- if (item.type | default("1") == '3' or item.type | default("1") == 'erasure') and item.erasure_profile != '' %} - {{ item.erasure_profile }} - {%- endif %} - {{ item.expected_num_objects | default('') }} + - name: check if ceph filesystem already exists + command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs get {{ cephfs }}" + register: check_existing_cephfs changed_when: false - with_items: - - "{{ cephfs_pools }}" + failed_when: false - - name: customize pool size - command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool set {{ item.name }} size {{ item.size | default(osd_pool_default_size) }}" - with_items: "{{ cephfs_pools | unique }}" + - name: create ceph filesystem + command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs new {{ cephfs }} {{ cephfs_metadata }} {{ cephfs_data }}" changed_when: false - when: item.size | default(osd_pool_default_size) != ceph_osd_pool_default_size - - - name: customize pool min_size - command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool set {{ item.name }} min_size {{ item.min_size | default(osd_pool_default_min_size) }}" - with_items: "{{ cephfs_pools | unique }}" - changed_when: false - when: (item.min_size | default(osd_pool_default_min_size))|int > ceph_osd_pool_default_min_size - -- name: check if ceph filesystem already exists - command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs get {{ cephfs }}" - register: check_existing_cephfs - changed_when: false - failed_when: false - delegate_to: "{{ groups[mon_group_name][0] }}" - -- name: create ceph filesystem - command: "{{ 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: assign application to cephfs pools - command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} osd pool application enable {{ item }} cephfs" - with_items: - - "{{ cephfs_data }}" - - "{{ cephfs_metadata }}" - changed_when: false - delegate_to: "{{ groups[mon_group_name][0] }}" - when: check_existing_cephfs.rc != 0 + when: check_existing_cephfs.rc != 0 - name: set max_mds command: "{{ docker_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds {{ mds_max_mds }}"