]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
Allow ceph service systemd overrides to be specified 1654/head
authorAndy McCrae <andy.mccrae@gmail.com>
Wed, 5 Jul 2017 13:47:48 +0000 (14:47 +0100)
committerAndy McCrae <andy.mccrae@gmail.com>
Wed, 16 Aug 2017 16:57:06 +0000 (17:57 +0100)
ceph services can fail to start under certain circumstances (for
example, when running in a container) because the default systemd
service configuration causes namespace issues.

To work around this we can override the system service settings by
placing an overrides file in the ceph-<service>@.service.d directory.
This can be generic so as to allow any potential changes required to
the ceph-<service> service files.

The overrides file is only setup when the
"ceph_<service>_systemd_overrides" config_template override variable is
specified.

The available service systemd override files are as follows:
ceph_mds_systemd_overrides
ceph_mgr_systemd_overrides
ceph_mon_systemd_overrides
ceph_osd_systemd_overrides
ceph_rbd_mirror_systemd_overrides
ceph_rgw_systemd_overrides

24 files changed:
group_vars/mdss.yml.sample
group_vars/mgrs.yml.sample
group_vars/mons.yml.sample
group_vars/osds.yml.sample
group_vars/rbd-mirrors.yml.sample
group_vars/rgws.yml.sample
roles/ceph-mds/defaults/main.yml
roles/ceph-mds/tasks/pre_requisite.yml
roles/ceph-mds/templates/ceph-mds.service.d-overrides.j2 [new file with mode: 0644]
roles/ceph-mgr/defaults/main.yml
roles/ceph-mgr/tasks/pre_requisite.yml
roles/ceph-mgr/templates/ceph-mgr.service.d-overrides.j2 [new file with mode: 0644]
roles/ceph-mon/defaults/main.yml
roles/ceph-mon/tasks/start_monitor.yml
roles/ceph-mon/templates/ceph-mon.service.d-overrides.j2 [new file with mode: 0644]
roles/ceph-osd/defaults/main.yml
roles/ceph-osd/tasks/start_osds.yml
roles/ceph-osd/templates/ceph-osd.service.d-overrides.j2 [new file with mode: 0644]
roles/ceph-rbd-mirror/defaults/main.yml
roles/ceph-rbd-mirror/tasks/start_rbd_mirror.yml
roles/ceph-rbd-mirror/templates/ceph-rbd-mirror.service.d-overrides.j2 [new file with mode: 0644]
roles/ceph-rgw/defaults/main.yml
roles/ceph-rgw/tasks/start_radosgw.yml
roles/ceph-rgw/templates/ceph-rgw.service.d-overrides.j2 [new file with mode: 0644]

index 084f40994709634fb28e881af47daf4ff3a18c9a..f14cda8d50c13c79fa2f9aa812a2220d8619ca5a 100644 (file)
@@ -28,3 +28,13 @@ dummy:
 #ceph_mds_docker_extra_env: -e CLUSTER={{ cluster }} -e MDS_NAME={{ ansible_hostname }}
 #ceph_config_keys: [] # DON'T TOUCH ME
 
+###########
+# SYSTEMD #
+###########
+# ceph_mds_systemd_overrides will override the systemd settings
+# for the ceph-mds services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_mds_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
+
index 787e3cc786abe4804cae45e8f4785ae72195cfc2..4c89e83230a41fe7aa85d68de8c269e0003ccfd9 100644 (file)
@@ -14,3 +14,13 @@ dummy:
 #ceph_mgr_docker_extra_env: -e CLUSTER={{ cluster }} -e MGR_NAME={{ ansible_hostname }}
 #ceph_config_keys: [] # DON'T TOUCH ME
 
+###########
+# SYSTEMD #
+###########
+# ceph_mgr_systemd_overrides will override the systemd settings
+# for the ceph-mgr services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_mgr_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
+
index 7369c66c48b8b3bde5e09c2da228383819440145..236739de6e61b4c1bf4f03b4e9bb7c0bb01c9791 100644 (file)
@@ -125,3 +125,13 @@ dummy:
 #mon_docker_net_host: true
 #ceph_config_keys: [] # DON'T TOUCH ME
 
+###########
+# SYSTEMD #
+###########
+# ceph_mon_systemd_overrides will override the systemd settings
+# for the ceph-mon services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_mon_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
+
index 2cf8e129298b00b2e258e963f6aa4a1a5739bb32..bb95b209d56f76c3897189364a979e950e7f7c05 100644 (file)
@@ -246,3 +246,13 @@ dummy:
 #ceph_osd_docker_extra_env: -e CLUSTER={{ cluster }} -e OSD_JOURNAL_SIZE={{ journal_size }}
 #ceph_osd_docker_run_script_path: "/usr/share" # script called by systemd to run the docker command
 
+###########
+# SYSTEMD #
+###########
+# ceph_osd_systemd_overrides will override the systemd settings
+# for the ceph-osd services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_osd_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
+
index 4be7cfd7ed00e4d0a1f562bc53415450d0c58ce4..66efd701d127e05dfc83365a33274f270dc03fa4 100644 (file)
@@ -44,3 +44,14 @@ dummy:
 
 #ceph_config_keys: [] # DON'T TOUCH ME
 
+
+###########
+# SYSTEMD #
+###########
+# ceph_rbd_mirror_systemd_overrides will override the systemd settings
+# for the ceph-rbd-mirror services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_rbd_mirror_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
+
index 22e2eeb043e9aff74dc7e6590cdeb17550bf976c..53ea5976eae182714b3828925f4ab38b6b71d16f 100644 (file)
@@ -60,3 +60,13 @@ dummy:
 #ceph_config_keys: [] # DON'T TOUCH ME
 #rgw_config_keys: "/" # DON'T TOUCH ME
 
+###########
+# SYSTEMD #
+###########
+# ceph_rgw_systemd_overrides will override the systemd settings
+# for the ceph-rgw services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_rgw_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
+
index ec6dd154b22cc32a364e3a9d02648f07072b72f8..bd87d1c6f575615658010256400291a5a4ce9cf2 100644 (file)
@@ -19,3 +19,14 @@ copy_admin_key: false
 
 ceph_mds_docker_extra_env: -e CLUSTER={{ cluster }} -e MDS_NAME={{ ansible_hostname }}
 ceph_config_keys: [] # DON'T TOUCH ME
+
+
+###########
+# SYSTEMD #
+###########
+# ceph_mds_systemd_overrides will override the systemd settings
+# for the ceph-mds services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_mds_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
index a3f9020f0307dfc86a85b8616b1504d9676d7226..cff635f46ba315028e139a59818e58cf4bc9f818 100644 (file)
     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 }}
diff --git a/roles/ceph-mds/templates/ceph-mds.service.d-overrides.j2 b/roles/ceph-mds/templates/ceph-mds.service.d-overrides.j2
new file mode 100644 (file)
index 0000000..e2bb153
--- /dev/null
@@ -0,0 +1 @@
+# {{ ansible_managed }}
index 73a031797f242056f6096475720f91139b8886d2..a0166404eb1ab3065f7e4e4f20e9b631d4c9170b 100644 (file)
@@ -5,3 +5,14 @@
 
 ceph_mgr_docker_extra_env: -e CLUSTER={{ cluster }} -e MGR_NAME={{ ansible_hostname }}
 ceph_config_keys: [] # DON'T TOUCH ME
+
+
+###########
+# SYSTEMD #
+###########
+# ceph_mgr_systemd_overrides will override the systemd settings
+# for the ceph-mgr services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_mgr_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
index 35edcc3909b425f1183361963600a2c7dade1624..80e9b3f4580b4ae88aa03701a007fbb282939445 100644 (file)
   when:
     - cephx
 
+- name: ensure systemd service override directory exists
+  file:
+    state: directory
+    path: "/etc/systemd/system/ceph-mgr@.service.d/"
+  when:
+    - ceph_mgr_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
+- name: add ceph-mgr systemd service overrides
+  config_template:
+    src: "ceph-mgr.service.d-overrides.j2"
+    dest: "/etc/systemd/system/ceph-mgr@.service.d/ceph-mgr-systemd-overrides.conf"
+    config_overrides: "{{ ceph_mgr_systemd_overrides | default({}) }}"
+    config_type: "ini"
+  when:
+    - ceph_mgr_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
 - name: start and add that the mgr service to the init sequence
   service:
     name: "ceph-mgr@{{ ansible_hostname }}"
diff --git a/roles/ceph-mgr/templates/ceph-mgr.service.d-overrides.j2 b/roles/ceph-mgr/templates/ceph-mgr.service.d-overrides.j2
new file mode 100644 (file)
index 0000000..e2bb153
--- /dev/null
@@ -0,0 +1 @@
+# {{ ansible_managed }}
index 53f64fea3002430c1baf03137b4a6adfbb3e8ecf..398ec65190b33dd8f61f1670fb574752a989f43c 100644 (file)
@@ -116,3 +116,14 @@ ceph_mon_docker_extra_env: -e CLUSTER={{ cluster }} -e FSID={{ fsid }} -e MON_NA
 mon_docker_privileged: false
 mon_docker_net_host: true
 ceph_config_keys: [] # DON'T TOUCH ME
+
+
+###########
+# SYSTEMD #
+###########
+# ceph_mon_systemd_overrides will override the systemd settings
+# for the ceph-mon services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_mon_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
index 27cbdf933dbc18b3ba066b0b470cc87e015bd31e..6309a9c39f29d7dd2fe858257e03feada45bace7 100644 (file)
@@ -1,4 +1,22 @@
 ---
+- name: ensure systemd service override directory exists
+  file:
+    state: directory
+    path: "/etc/systemd/system/ceph-mon@.service.d/"
+  when:
+    - ceph_mon_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
+- name: add ceph-mon systemd service overrides
+  config_template:
+    src: "ceph-mon.service.d-overrides.j2"
+    dest: "/etc/systemd/system/ceph-mon@.service.d/ceph-mon-systemd-overrides.conf"
+    config_overrides: "{{ ceph_mon_systemd_overrides | default({}) }}"
+    config_type: "ini"
+  when:
+    - ceph_mon_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
 - name: start the monitor service
   service:
     name: ceph-mon@{{ monitor_name }}
diff --git a/roles/ceph-mon/templates/ceph-mon.service.d-overrides.j2 b/roles/ceph-mon/templates/ceph-mon.service.d-overrides.j2
new file mode 100644 (file)
index 0000000..e2bb153
--- /dev/null
@@ -0,0 +1 @@
+# {{ ansible_managed }}
index 30a087cf6c3814e2ee4ecdddf109a37bc14ec8e6..e4d9f649fcd695b8f37a69370d0eeca3294a8627 100644 (file)
@@ -238,3 +238,14 @@ ceph_osd_docker_prepare_env: -e CLUSTER={{ cluster }} -e OSD_JOURNAL_SIZE={{ jou
 #
 ceph_osd_docker_extra_env: -e CLUSTER={{ cluster }} -e OSD_JOURNAL_SIZE={{ journal_size }}
 ceph_osd_docker_run_script_path: "/usr/share" # script called by systemd to run the docker command
+
+
+###########
+# SYSTEMD #
+###########
+# ceph_osd_systemd_overrides will override the systemd settings
+# for the ceph-osd services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_osd_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
index b0978fc812e2f2e91766a551d2ebdbcb6265ebdf..19e4c390a674698666e984de15ab8d0e8955bdfa 100644 (file)
   always_run: true
   register: osd_id
 
+- name: ensure systemd service override directory exists
+  file:
+    state: directory
+    path: "/etc/systemd/system/ceph-osd@.service.d/"
+  when:
+    - ceph_osd_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
+- name: add ceph-osd systemd service overrides
+  config_template:
+    src: "ceph-osd.service.d-overrides.j2"
+    dest: "/etc/systemd/system/ceph-osd@.service.d/ceph-osd-systemd-overrides.conf"
+    config_overrides: "{{ ceph_osd_systemd_overrides | default({}) }}"
+    config_type: "ini"
+  when:
+    - ceph_osd_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
 - name: ensure osd daemons are started
   service:
     name: ceph-osd@{{ item }}
diff --git a/roles/ceph-osd/templates/ceph-osd.service.d-overrides.j2 b/roles/ceph-osd/templates/ceph-osd.service.d-overrides.j2
new file mode 100644 (file)
index 0000000..e2bb153
--- /dev/null
@@ -0,0 +1 @@
+# {{ ansible_managed }}
index a362a5e8fa3c0e2f7602dea3c202017c796ab7a9..59bc05d29bc5ef105d828f9a59d09acf89ee1da5 100644 (file)
@@ -35,3 +35,14 @@ ceph_rbd_mirror_pool: ""
 ##########
 
 ceph_config_keys: [] # DON'T TOUCH ME
+
+
+###########
+# SYSTEMD #
+###########
+# ceph_rbd_mirror_systemd_overrides will override the systemd settings
+# for the ceph-rbd-mirror services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_rbd_mirror_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
index 1d1c004ad7cecc780ea3b271142fd1a36eeed303..e48149b4699c734cda5570e72cc7ce65f427c07f 100644 (file)
@@ -1,4 +1,22 @@
 ---
+- name: ensure systemd service override directory exists
+  file:
+    state: directory
+    path: "/etc/systemd/system/ceph-rbd-mirror@.service.d/"
+  when:
+    - ceph_rbd_mirror_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
+- name: add ceph-rbd-mirror systemd service overrides
+  config_template:
+    src: "ceph-rbd-mirror.service.d-overrides.j2"
+    dest: "/etc/systemd/system/ceph-rbd-mirror@.service.d/ceph-rbd-mirror-systemd-overrides.conf"
+    config_overrides: "{{ ceph_rbd_mirror_systemd_overrides | default({}) }}"
+    config_type: "ini"
+  when:
+    - ceph_rbd_mirror_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
 - name: start and add that the rbd mirror service to the init sequence
   service:
       name: "ceph-rbd-mirror@{{ ceph_rbd_mirror_local_user }}"
diff --git a/roles/ceph-rbd-mirror/templates/ceph-rbd-mirror.service.d-overrides.j2 b/roles/ceph-rbd-mirror/templates/ceph-rbd-mirror.service.d-overrides.j2
new file mode 100644 (file)
index 0000000..e2bb153
--- /dev/null
@@ -0,0 +1 @@
+# {{ ansible_managed }}
index 7a6ee4fb08099230af00821546a484f9f84bedbf..fda6610b80a8752e3bf592f9fc29199f9a90f09d 100644 (file)
@@ -51,3 +51,14 @@ ceph_rgw_civetweb_port: "{{ radosgw_civetweb_port }}"
 ceph_rgw_docker_extra_env: -e CLUSTER={{ cluster }} -e RGW_CIVETWEB_PORT={{ ceph_rgw_civetweb_port }}
 ceph_config_keys: [] # DON'T TOUCH ME
 rgw_config_keys: "/" # DON'T TOUCH ME
+
+
+###########
+# SYSTEMD #
+###########
+# ceph_rgw_systemd_overrides will override the systemd settings
+# for the ceph-rgw services.
+# For example,to set "PrivateDevices=false" you can specify:
+#ceph_rgw_systemd_overrides:
+#  Service:
+#    PrivateDevices: False
index c58be7db2a0a2ed47a9f0e96d16444f5229b0c67..96e806fe9719b28338d1df431d615420abce0dda 100644 (file)
@@ -6,6 +6,24 @@
   failed_when: false
   always_run: true
 
+- name: ensure systemd service override directory exists
+  file:
+    state: directory
+    path: "/etc/systemd/system/ceph-rgw@.service.d/"
+  when:
+    - ceph_rgw_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
+- name: add ceph-rgw systemd service overrides
+  config_template:
+    src: "ceph-rgw.service.d-overrides.j2"
+    dest: "/etc/systemd/system/ceph-rgw@.service.d/ceph-rgw-systemd-overrides.conf"
+    config_overrides: "{{ ceph_rgw_systemd_overrides | default({}) }}"
+    config_type: "ini"
+  when:
+    - ceph_rgw_systemd_overrides is defined
+    - ansible_service_mgr == 'systemd'
+
 - name: start rgw
   service:
     name: ceph-radosgw@rgw.{{ ansible_hostname }}
diff --git a/roles/ceph-rgw/templates/ceph-rgw.service.d-overrides.j2 b/roles/ceph-rgw/templates/ceph-rgw.service.d-overrides.j2
new file mode 100644 (file)
index 0000000..e2bb153
--- /dev/null
@@ -0,0 +1 @@
+# {{ ansible_managed }}