]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
switch2container: disable ceph-osd enabled-runtime
authorDimitri Savineau <dsavinea@redhat.com>
Mon, 19 Oct 2020 21:22:31 +0000 (17:22 -0400)
committerGuillaume Abrioux <gabrioux@redhat.com>
Thu, 12 Nov 2020 19:05:39 +0000 (20:05 +0100)
When deploying the ceph OSD via the packages then the ceph-osd@.service
unit is configured as enabled-runtime.
This means that each ceph-osd service will inherit from that state.
The enabled-runtime systemd state doesn't survive after a reboot.
For non containerized deployment the OSD are still starting after a
reboot because there's the ceph-volume@.service and/or ceph-osd.target
units that are doing the job.

$ systemctl list-unit-files|egrep '^ceph-(volume|osd)'|column -t
ceph-osd@.service     enabled-runtime
ceph-volume@.service  enabled
ceph-osd.target       enabled

When switching to containerized deployment we are stopping/disabling
ceph-osd@XX.servive, ceph-volume and ceph.target and then removing the
systemd unit files.
But the new systemd units for containerized ceph-osd service will still
inherit from ceph-osd@.service unit file.

As a consequence, if an OSD host is rebooting after the playbook execution
then the ceph-osd service won't come back because they aren't enabled at
boot.

This patch also adds a reboot and testinfra run after running the switch
to container playbook.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1881288
Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
tox.ini

index 054029920ea3fca6e8ba78d0273a9310e7483a44..bc7943db3f768365e638a0e0a4b0625d260df255 100644 (file)
       changed_when: false
       failed_when: false
 
+    # systemd module does not support --runtime option
+    - name: disable ceph-osd@.service runtime-enabled
+      command: "systemctl disable --runtime {{ item }}"
+      changed_when: false
+      failed_when: false
+      with_items: "{{ running_osds.stdout_lines | default([])}}"
+      when: item.startswith('ceph-osd@')
+
     - name: stop/disable/mask non-containerized ceph osd(s) (if any)
       systemd:
         name: "{{ item }}"
diff --git a/tox.ini b/tox.ini
index 3c1623dc72b9d8aabf8571eb8c5b059212bbf502..55e9b7cbd8e5ca2835eee4ea40340a9343a0a25a 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -145,6 +145,10 @@ commands=
 
   py.test --reruns 5 --reruns-delay 1 -n 8 --durations=0 --sudo -v --connection=ansible --ansible-inventory={changedir}/hosts-switch-to-containers --ssh-config={changedir}/vagrant_ssh_config {toxinidir}/tests/functional/tests
 
+  ansible-playbook -vv -i {changedir}/{env:INVENTORY} {toxinidir}/tests/functional/reboot.yml
+
+  py.test --reruns 5 --reruns-delay 1 -n 8 --durations=0 --sudo -v --connection=ansible --ansible-inventory={changedir}/hosts-switch-to-containers --ssh-config={changedir}/vagrant_ssh_config {toxinidir}/tests/functional/tests
+
 [add-mons]
 commands=
   ansible-playbook -vv -i {changedir}/hosts-2 --limit mon1 {toxinidir}/tests/functional/setup.yml