diff --git a/roles/ceph-mds/tasks/containerized.yml b/roles/ceph-mds/tasks/containerized.yml new file mode 100644 index 000000000..8a5f5ddc8 --- /dev/null +++ b/roles/ceph-mds/tasks/containerized.yml @@ -0,0 +1,73 @@ +--- +- name: set_fact ceph_config_keys + set_fact: + ceph_config_keys: + - /var/lib/ceph/bootstrap-mds/{{ cluster }}.keyring + +- name: stat for ceph config and keys + local_action: stat path={{ fetch_directory }}/{{ fsid }}/{{ item }} + with_items: "{{ ceph_config_keys }}" + changed_when: false + become: false + failed_when: false + always_run: true + register: statconfig + +- name: try to fetch ceph config and keys + copy: + src: "{{ fetch_directory }}/{{ fsid }}/{{ item.0 }}" + dest: "{{ item.0 }}" + owner: root + group: root + mode: 0644 + changed_when: false + with_together: + - "{{ ceph_config_keys }}" + - "{{ statconfig.results }}" + when: item.1.stat.exists == true + +- name: set selinux permissions + shell: | + chcon -Rt svirt_sandbox_file_t {{ item }} + with_items: + - "{{ ceph_conf_key_directory }}" + - /var/lib/ceph + changed_when: false + when: sestatus.stdout != 'Disabled' + +- name: generate systemd unit file + become: true + template: + src: "{{ role_path }}/templates/ceph-mds.service.j2" + dest: /etc/systemd/system/ceph-mds@.service + owner: "root" + group: "root" + mode: "0644" + +- name: systemd start mds container + systemd: + name: ceph-mds@{{ ansible_hostname }} + state: started + enabled: yes + daemon_reload: yes + changed_when: false + +- name: wait for mds socket to exist + command: "{{ docker_exec_cmd }} stat /var/run/ceph/{{ cluster }}-mds.{{ ansible_hostname }}.asok" + register: multi_mds_socket + retries: 5 + delay: 15 + until: multi_mds_socket.rc == 0 + +- name: enable multimds if requested when mon is containerized + command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} fs set {{ cephfs }} allow_multimds true --yes-i-really-mean-it" + changed_when: false + when: + - mds_allow_multimds + +- name: set max_mds when mon is containerized + command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds {{ mds_max_mds }}" + changed_when: false + when: + - mds_allow_multimds + - mds_max_mds > 1 diff --git a/roles/ceph-mds/tasks/docker/copy_configs.yml b/roles/ceph-mds/tasks/docker/copy_configs.yml deleted file mode 100644 index cecc7fc4d..000000000 --- a/roles/ceph-mds/tasks/docker/copy_configs.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -- name: set_fact ceph_config_keys - set_fact: - ceph_config_keys: - - /etc/ceph/{{ cluster }}.client.admin.keyring - - /var/lib/ceph/bootstrap-mds/{{ cluster }}.keyring - -- name: stat for ceph config and keys - local_action: stat path={{ fetch_directory }}/{{ fsid }}/{{ item }} - with_items: "{{ ceph_config_keys }}" - changed_when: false - become: false - failed_when: false - always_run: true - register: statconfig - -- name: try to fetch ceph config and keys - copy: - src: "{{ fetch_directory }}/{{ fsid }}/{{ item.0 }}" - dest: "{{ item.0 }}" - owner: root - group: root - mode: 0644 - changed_when: false - with_together: - - "{{ ceph_config_keys }}" - - "{{ statconfig.results }}" - when: item.1.stat.exists == true - -- name: set selinux permissions - shell: | - chcon -Rt svirt_sandbox_file_t {{ item }} - with_items: - - "{{ ceph_conf_key_directory }}" - - /var/lib/ceph - changed_when: false - when: - - ansible_os_family == 'RedHat' - - sestatus.stdout != 'Disabled' diff --git a/roles/ceph-mds/tasks/docker/enable_multimds.yml b/roles/ceph-mds/tasks/docker/enable_multimds.yml deleted file mode 100644 index e050f79ef..000000000 --- a/roles/ceph-mds/tasks/docker/enable_multimds.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -- name: wait for mds socket to exist - command: "{{ docker_exec_cmd }} stat /var/run/ceph/{{ cluster }}-mds.{{ ansible_hostname }}.asok" - register: multi_mds_socket - retries: 5 - delay: 15 - until: multi_mds_socket.rc == 0 - -- name: enable multimds if requested when mon is containerized - command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} fs set {{ cephfs }} allow_multimds true --yes-i-really-mean-it" - changed_when: false - when: - - containerized_deployment - - mds_allow_multimds - -- name: set max_mds when mon is containerized - command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds {{ mds_max_mds }}" - changed_when: false - when: - - containerized_deployment - - mds_allow_multimds - - mds_max_mds > 1 diff --git a/roles/ceph-mds/tasks/docker/main.yml b/roles/ceph-mds/tasks/docker/main.yml deleted file mode 100644 index 969388fcf..000000000 --- a/roles/ceph-mds/tasks/docker/main.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -- name: set_fact docker_exec_cmd - set_fact: - docker_exec_cmd: "docker exec ceph-mds-{{ ansible_hostname }}" - -- name: include copy_configs.yml - include: copy_configs.yml - -- name: include start_docker_mds.yml - include: start_docker_mds.yml - -- name: include enable_multimds.yml - include: enable_multimds.yml diff --git a/roles/ceph-mds/tasks/docker/start_docker_mds.yml b/roles/ceph-mds/tasks/docker/start_docker_mds.yml deleted file mode 100644 index 3f69c8cb2..000000000 --- a/roles/ceph-mds/tasks/docker/start_docker_mds.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -- name: generate systemd unit file - become: true - template: - src: "{{ role_path }}/templates/ceph-mds.service.j2" - dest: /etc/systemd/system/ceph-mds@.service - owner: "root" - group: "root" - mode: "0644" - -- name: systemd start mds container - systemd: - name: ceph-mds@{{ ansible_hostname }} - state: started - enabled: yes - daemon_reload: yes - changed_when: false diff --git a/roles/ceph-mds/tasks/main.yml b/roles/ceph-mds/tasks/main.yml index 5df5e2163..7ba25cce1 100644 --- a/roles/ceph-mds/tasks/main.yml +++ b/roles/ceph-mds/tasks/main.yml @@ -1,8 +1,8 @@ --- -- name: include pre_requisite.yml - include: pre_requisite.yml +- name: non_containerized.yml + include: non_containerized.yml when: not containerized_deployment -- name: docker/main.yml - include: docker/main.yml +- name: containerized.yml + include: containerized.yml when: containerized_deployment diff --git a/roles/ceph-mds/tasks/pre_requisite.yml b/roles/ceph-mds/tasks/non_containerized.yml similarity index 100% rename from roles/ceph-mds/tasks/pre_requisite.yml rename to roles/ceph-mds/tasks/non_containerized.yml diff --git a/roles/ceph-mds/templates/ceph-mds.service.j2 b/roles/ceph-mds/templates/ceph-mds.service.j2 index 48e4e561b..68f1f6977 100644 --- a/roles/ceph-mds/templates/ceph-mds.service.j2 +++ b/roles/ceph-mds/templates/ceph-mds.service.j2 @@ -23,7 +23,6 @@ ExecStart=/usr/bin/docker run --rm --net=host \ {% endif -%} -v /etc/localtime:/etc/localtime:ro \ -e CLUSTER={{ cluster }} \ - -e CEPHFS_CREATE=1 \ -e CEPH_DAEMON=MDS \ {{ ceph_mds_docker_extra_env }} \ --name=ceph-mds-{{ ansible_hostname }} \ diff --git a/roles/ceph-mon/tasks/create_mds_filesystems.yml b/roles/ceph-mon/tasks/create_mds_filesystems.yml index 29bdb8efa..2d4bdec6a 100644 --- a/roles/ceph-mon/tasks/create_mds_filesystems.yml +++ b/roles/ceph-mon/tasks/create_mds_filesystems.yml @@ -4,32 +4,32 @@ # the role 'ceph-common' doesn't get inherited so the condition can not be evaluate # since those check are performed by the ceph-common role - name: create filesystem pools - command: ceph --cluster {{ cluster }} osd pool create {{ item }} {{ osd_pool_default_pg_num }} + command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} osd pool create {{ item }} {{ osd_pool_default_pg_num }}" with_items: - cephfs_data - cephfs_metadata changed_when: false - name: check if ceph filesystem already exists - command: ceph --cluster {{ cluster }} fs get {{ cephfs }} + 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: ceph --cluster {{ cluster }} fs new {{ cephfs }} {{ cephfs_metadata }} {{ cephfs_data }} + 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: ceph --cluster {{ cluster }} fs set {{ cephfs }} allow_multimds true --yes-i-really-mean-it + 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 - mds_allow_multimds - name: set max_mds - command: ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds {{ mds_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 diff --git a/roles/ceph-mon/tasks/main.yml b/roles/ceph-mon/tasks/main.yml index 1817f06b7..34bf97315 100644 --- a/roles/ceph-mon/tasks/main.yml +++ b/roles/ceph-mon/tasks/main.yml @@ -16,14 +16,6 @@ # this avoids the bug mentioned here: https://github.com/ansible/ansible/issues/18206 static: no -- name: include create_mds_filesystems.yml - include: create_mds_filesystems.yml - when: - - not containerized_deployment - - groups[mds_group_name] is defined - - "{{ groups[mds_group_name]|length > 0 }}" - - "{{ inventory_hostname == groups[mon_group_name] | last }}" - - name: include secure_cluster.yml include: secure_cluster.yml when: @@ -34,6 +26,13 @@ include: docker/main.yml when: containerized_deployment +- 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