]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
refact MDS role 1968/head
authorGuillaume Abrioux <gabrioux@redhat.com>
Wed, 27 Sep 2017 12:13:39 +0000 (14:13 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Mon, 2 Oct 2017 07:12:31 +0000 (09:12 +0200)
This commits refacts the role ceph-mds

The goal here is to create cephfs in `ceph-mon` for both containerized
and non-containerized cases so we don't need the admin keyring on mds
nodes anymore.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1488999
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
roles/ceph-mds/tasks/containerized.yml [new file with mode: 0644]
roles/ceph-mds/tasks/docker/copy_configs.yml [deleted file]
roles/ceph-mds/tasks/docker/enable_multimds.yml [deleted file]
roles/ceph-mds/tasks/docker/main.yml [deleted file]
roles/ceph-mds/tasks/docker/start_docker_mds.yml [deleted file]
roles/ceph-mds/tasks/main.yml
roles/ceph-mds/tasks/non_containerized.yml [new file with mode: 0644]
roles/ceph-mds/tasks/pre_requisite.yml [deleted file]
roles/ceph-mds/templates/ceph-mds.service.j2
roles/ceph-mon/tasks/create_mds_filesystems.yml
roles/ceph-mon/tasks/main.yml

diff --git a/roles/ceph-mds/tasks/containerized.yml b/roles/ceph-mds/tasks/containerized.yml
new file mode 100644 (file)
index 0000000..8a5f5dd
--- /dev/null
@@ -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 (file)
index cecc7fc..0000000
+++ /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 (file)
index e050f79..0000000
+++ /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 (file)
index 969388f..0000000
+++ /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 (file)
index 3f69c8c..0000000
+++ /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
index 5df5e21630d48eed2258b2ad52bdc366e60f4266..7ba25cce1b7a1e8261bc97beda233896ebaeac1a 100644 (file)
@@ -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/non_containerized.yml b/roles/ceph-mds/tasks/non_containerized.yml
new file mode 100644 (file)
index 0000000..cff635f
--- /dev/null
@@ -0,0 +1,70 @@
+---
+- name: create bootstrap-mds directory
+  file:
+    path: /var/lib/ceph/bootstrap-mds/
+    state: directory
+    owner: "ceph"
+    group: "ceph"
+    mode: "0755"
+
+- name: copy mds bootstrap key
+  copy:
+    src: "{{ fetch_directory }}/{{ fsid }}{{ item.name }}"
+    dest: "{{ item.name }}"
+    owner: "ceph"
+    group: "ceph"
+    mode: "0600"
+  with_items:
+    - { name: "/var/lib/ceph/bootstrap-mds/{{ cluster }}.keyring", copy_key: true }
+    - { name: "/etc/ceph/{{ cluster }}.client.admin.keyring", copy_key: "{{ copy_admin_key }}" }
+  when:
+    - cephx
+    - item.copy_key|bool
+
+- name: create mds directory
+  file:
+    path: /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}
+    state: directory
+    owner: "ceph"
+    group: "ceph"
+    mode: "0755"
+
+- name: create mds keyring
+  command: ceph --cluster {{ cluster }} --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/{{ cluster }}.keyring auth get-or-create mds.{{ mds_name }} osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}/keyring
+  args:
+    creates: /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}/keyring
+  changed_when: false
+  when: cephx
+
+- name: set mds key permissions
+  file:
+    path: /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}/keyring
+    owner: "ceph"
+    group: "ceph"
+    mode: "0600"
+  when: cephx
+
+- name: ensure systemd service override directory exists
+  file:
+    state: directory
+    path: "/etc/systemd/system/ceph-mds@.service.d/"
+  when:
+    - ceph_mds_systemd_overrides is defined
+    - ansible_server_mgr == 'systemd'
+
+- name: add ceph-mds systemd service overrides
+  config_template:
+    src: "ceph-mds.service.d-overrides.j2"
+    dest: "/etc/systemd/system/ceph-mds@.service.d/ceph-mds-systemd-overrides.conf"
+    config_overrides: "{{ ceph_mds_systemd_overrides | default({}) }}"
+    config_type: "ini"
+  when:
+    - ceph_mds_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
+- name: start and add that the metadata service to the init sequence
+  service:
+    name: ceph-mds@{{ mds_name }}
+    state: started
+    enabled: yes
+  changed_when: false
diff --git a/roles/ceph-mds/tasks/pre_requisite.yml b/roles/ceph-mds/tasks/pre_requisite.yml
deleted file mode 100644 (file)
index cff635f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
----
-- name: create bootstrap-mds directory
-  file:
-    path: /var/lib/ceph/bootstrap-mds/
-    state: directory
-    owner: "ceph"
-    group: "ceph"
-    mode: "0755"
-
-- name: copy mds bootstrap key
-  copy:
-    src: "{{ fetch_directory }}/{{ fsid }}{{ item.name }}"
-    dest: "{{ item.name }}"
-    owner: "ceph"
-    group: "ceph"
-    mode: "0600"
-  with_items:
-    - { name: "/var/lib/ceph/bootstrap-mds/{{ cluster }}.keyring", copy_key: true }
-    - { name: "/etc/ceph/{{ cluster }}.client.admin.keyring", copy_key: "{{ copy_admin_key }}" }
-  when:
-    - cephx
-    - item.copy_key|bool
-
-- name: create mds directory
-  file:
-    path: /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}
-    state: directory
-    owner: "ceph"
-    group: "ceph"
-    mode: "0755"
-
-- name: create mds keyring
-  command: ceph --cluster {{ cluster }} --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/{{ cluster }}.keyring auth get-or-create mds.{{ mds_name }} osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}/keyring
-  args:
-    creates: /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}/keyring
-  changed_when: false
-  when: cephx
-
-- name: set mds key permissions
-  file:
-    path: /var/lib/ceph/mds/{{ cluster }}-{{ mds_name }}/keyring
-    owner: "ceph"
-    group: "ceph"
-    mode: "0600"
-  when: cephx
-
-- name: ensure systemd service override directory exists
-  file:
-    state: directory
-    path: "/etc/systemd/system/ceph-mds@.service.d/"
-  when:
-    - ceph_mds_systemd_overrides is defined
-    - ansible_server_mgr == 'systemd'
-
-- name: add ceph-mds systemd service overrides
-  config_template:
-    src: "ceph-mds.service.d-overrides.j2"
-    dest: "/etc/systemd/system/ceph-mds@.service.d/ceph-mds-systemd-overrides.conf"
-    config_overrides: "{{ ceph_mds_systemd_overrides | default({}) }}"
-    config_type: "ini"
-  when:
-    - ceph_mds_systemd_overrides is defined
-    - ansible_service_mgr == 'systemd'
-
-- name: start and add that the metadata service to the init sequence
-  service:
-    name: ceph-mds@{{ mds_name }}
-    state: started
-    enabled: yes
-  changed_when: false
index 48e4e561b168a411cb57ce4b7d909ed9dc470a27..68f1f6977d60e3cf61cc07ae63c1e06480278673 100644 (file)
@@ -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 }} \
index 29bdb8efa7d47c21ec85c1b85aaeeb4b1e7747b4..2d4bdec6a24ce84a00637a971281dafb0ea0bc76 100644 (file)
@@ -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
index 1817f06b738b9e36da8866c95f62c0b09b6df7a8..34bf97315cb1596d776c6041ea6d9196a9708e7f 100644 (file)
   # 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:
   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