]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
containers: introduce target systemd unit v4.0.64
authorGuillaume Abrioux <gabrioux@redhat.com>
Tue, 10 Aug 2021 13:21:19 +0000 (15:21 +0200)
committerDimitri Savineau <savineau.dimitri@gmail.com>
Wed, 18 Aug 2021 17:43:01 +0000 (13:43 -0400)
This adds ceph-*.target systemd unit files support for containerized
deployments.
This also fixes a regression introduced by PR #6719 (rgw and nfs systemd
units not getting purged)

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1962748
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit 09ef465f62fde775bd2490be5b43d7796e2a9c6c)

24 files changed:
infrastructure-playbooks/purge-cluster.yml
roles/ceph-container-common/files/ceph.target [new file with mode: 0644]
roles/ceph-container-common/tasks/main.yml
roles/ceph-crash/templates/ceph-crash.service.j2
roles/ceph-mds/files/ceph-mds.target [new file with mode: 0644]
roles/ceph-mds/tasks/containerized.yml
roles/ceph-mds/tasks/systemd.yml
roles/ceph-mds/templates/ceph-mds.service.j2
roles/ceph-mgr/files/ceph-mgr.target [new file with mode: 0644]
roles/ceph-mgr/tasks/start_mgr.yml
roles/ceph-mgr/tasks/systemd.yml
roles/ceph-mgr/templates/ceph-mgr.service.j2
roles/ceph-mon/files/ceph-mon.target [new file with mode: 0644]
roles/ceph-mon/tasks/systemd.yml
roles/ceph-mon/templates/ceph-mon.service.j2
roles/ceph-osd/files/ceph-osd.target [new file with mode: 0644]
roles/ceph-osd/tasks/systemd.yml
roles/ceph-osd/templates/ceph-osd.service.j2
roles/ceph-rbd-mirror/files/ceph-rbd-mirror.target [new file with mode: 0644]
roles/ceph-rbd-mirror/tasks/systemd.yml
roles/ceph-rbd-mirror/templates/ceph-rbd-mirror.service.j2
roles/ceph-rgw/files/ceph-radosgw.target [new file with mode: 0644]
roles/ceph-rgw/tasks/systemd.yml
roles/ceph-rgw/templates/ceph-radosgw.service.j2

index d668ed1e3b1612059611cf507916d76447f8d5aa..beee116919eeb36304e4d14b18a297fec5096cd0 100644 (file)
 
     - name: remove ceph mds service
       file:
-        path: /etc/systemd/system/ceph-mds@.service
+        path: /etc/systemd/system/ceph-mds{{ item }}
         state: absent
+      loop:
+        - '@.service'
+        - '.target'
 
 
 - name: purge ceph mgr cluster
 
     - name: remove ceph mgr service
       file:
-        path: /etc/systemd/system/ceph-mgr@.service
+        path: /etc/systemd/system/ceph-mgr{{ item }}
         state: absent
-
+      loop:
+        - '@.service'
+        - '.target'
 
 - name: purge rgwloadbalancer cluster
   hosts: rgwloadbalancers
       failed_when: false
       with_items: "{{ rgw_instances }}"
 
+    - name: remove ceph rgw service
+      file:
+        path: /etc/systemd/system/ceph-radosgw{{ item }}
+        state: absent
+      loop:
+        - '@.service'
+        - '.target'
+
 
 - name: purge ceph rbd-mirror cluster
   hosts: rbdmirrors
         enabled: no
       failed_when: false
 
+    - name: remove ceph rbd-mirror service
+      file:
+        path: /etc/systemd/system/ceph-rbd-mirror{{ item }}
+        state: absent
+      loop:
+        - '@.service'
+        - '.target'
+
 
 - name: purge ceph osd cluster
   vars:
 
     - name: remove ceph osd service
       file:
-        path: /etc/systemd/system/ceph-osd@.service
+        path: /etc/systemd/system/ceph-osd{{ item }}
         state: absent
-      when: containerized_deployment | bool
+      loop:
+        - '@.service'
+        - '.target'
 
 - name: purge ceph mon cluster
   hosts: mons
 
     - name: remove ceph mon and mgr service
       file:
-        path: "/etc/systemd/system/ceph-{{ item }}@.service"
+        path: "/etc/systemd/system/ceph-{{ item.0 }}{{ item.1 }}"
         state: absent
-      with_items:
-        - mon
-        - mgr
+      loop: "{{ ['mon', 'mgr'] | product(['@.service', '.target']) | list }}"
 
 
 - name: purge ceph-crash daemons
diff --git a/roles/ceph-container-common/files/ceph.target b/roles/ceph-container-common/files/ceph.target
new file mode 100644 (file)
index 0000000..9c09851
--- /dev/null
@@ -0,0 +1,5 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph*@.service instances at once
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
index aa9139b0dac10095dd1fd3087fac98282b7584a1..4b663eb300e7a4cc9f8bfc8b8e80ef70ffb6214b 100644 (file)
@@ -1,4 +1,15 @@
 ---
+- name: generate systemd ceph-mon target file
+  copy:
+    src: ceph.target
+    dest: /etc/systemd/system/ceph.target
+
+- name: enable ceph.target
+  service:
+    name: ceph.target
+    enabled: yes
+    daemon_reload: yes
+
 - name: include prerequisites.yml
   include_tasks: prerequisites.yml
 
index 5343d02df81815cd3b146d161134259636596099..61b8740bc3efbb56b84421f199fdc9ec5c8bf9ad 100644 (file)
@@ -41,4 +41,4 @@ TimeoutStartSec=120
 TimeoutStopSec=10
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target
diff --git a/roles/ceph-mds/files/ceph-mds.target b/roles/ceph-mds/files/ceph-mds.target
new file mode 100644 (file)
index 0000000..ae15387
--- /dev/null
@@ -0,0 +1,9 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph-mds@.service instances at once
+PartOf=ceph.target
+After=ceph-mon.target
+Before=ceph.target
+Wants=ceph.target ceph-mon.target
+
+[Install]
+WantedBy=multi-user.target ceph.target
\ No newline at end of file
index 8919366ba234e0750f1fc3772a5f2d7c562be328..49f5add7245b2791910982d1c466f5b9a94ab1ab 100644 (file)
@@ -2,6 +2,13 @@
 - name: include_tasks systemd.yml
   include_tasks: systemd.yml
 
+- name: enable ceph-mds.target
+  service:
+    name: ceph-mds.target
+    enabled: yes
+    daemon_reload: yes
+  when: containerized_deployment | bool
+
 - name: systemd start mds container
   systemd:
     name: ceph-mds@{{ ansible_facts['hostname'] }}
index b76e11e617340e54fe9ae7ed6b4eb66e6120cddf..f6970828e5422615fd56ecf222e6bdbf9bb6c7e6 100644 (file)
@@ -7,3 +7,9 @@
     group: "root"
     mode: "0644"
   notify: restart ceph mdss
+
+- name: generate systemd ceph-mds target file
+  copy:
+    src: ceph-mds.target
+    dest: /etc/systemd/system/ceph-mds.target
+  when: containerized_deployment | bool
\ No newline at end of file
index 54b2d7ac8d2b95b80e33ce83e1a3fe1b25666099..c7930044399d093074b99fe6f6adea154b18af17 100644 (file)
@@ -1,5 +1,6 @@
 [Unit]
 Description=Ceph MDS
+PartOf=ceph-mds.target
 {% if container_binary == 'docker' %}
 After=docker.service
 Requires=docker.service
@@ -53,4 +54,4 @@ PIDFile=/%t/%n-pid
 {% endif %}
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target
diff --git a/roles/ceph-mgr/files/ceph-mgr.target b/roles/ceph-mgr/files/ceph-mgr.target
new file mode 100644 (file)
index 0000000..abb2598
--- /dev/null
@@ -0,0 +1,9 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph-mgr@.service instances at once
+PartOf=ceph.target
+After=ceph-mon.target
+Before=ceph.target
+Wants=ceph.target ceph-mon.target
+
+[Install]
+WantedBy=multi-user.target ceph.target
\ No newline at end of file
index 658ca975803f5b5ec8fbe0e61dcb3b0858c6cba5..ba38cf15ce9c0cc3fb5cae5beeb26c7230e24275 100644 (file)
   include_tasks: systemd.yml
   when: containerized_deployment | bool
 
+- name: enable ceph-mgr.target
+  service:
+    name: ceph-mgr.target
+    enabled: yes
+    daemon_reload: yes
+  when: containerized_deployment | bool
+
 - name: systemd start mgr
   systemd:
     name: ceph-mgr@{{ ansible_facts['hostname'] }}
index 2457a0e3fa68b3d84c9c8a7a300ffe54f80e54c1..2cfadc8ca50353a00ada815c549976e1ca79f3b7 100644 (file)
@@ -7,3 +7,9 @@
     group: "root"
     mode: "0644"
   notify: restart ceph mgrs
+
+- name: generate systemd ceph-mgr target file
+  copy:
+    src: ceph-mgr.target
+    dest: /etc/systemd/system/ceph-mgr.target
+  when: containerized_deployment | bool
\ No newline at end of file
index 2cca6364ba3cf410eebf2d2e6907594059ac3474..dd8a18a2040461bffa6703cacdaf2f00e0a1dceb 100644 (file)
@@ -1,5 +1,6 @@
 [Unit]
 Description=Ceph Manager
+PartOf=ceph-mgr.target
 {% if container_binary == 'docker' %}
 After=docker.service
 Requires=docker.service
@@ -52,4 +53,4 @@ PIDFile=/%t/%n-pid
 {% endif %}
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target
diff --git a/roles/ceph-mon/files/ceph-mon.target b/roles/ceph-mon/files/ceph-mon.target
new file mode 100644 (file)
index 0000000..b27d34b
--- /dev/null
@@ -0,0 +1,8 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph-mon@.service instances at once
+PartOf=ceph.target
+Before=ceph.target
+Wants=ceph.target
+
+[Install]
+WantedBy=multi-user.target ceph.target
\ No newline at end of file
index 9af8a59bfd5b5059e21131291db758764bb8ccfa..ba90b7448053c70f8ca8a795bc1373eddd589cb9 100644 (file)
@@ -7,3 +7,16 @@
     group: "root"
     mode: "0644"
   notify: restart ceph mons
+
+- name: generate systemd ceph-mon target file
+  copy:
+    src: ceph-mon.target
+    dest: /etc/systemd/system/ceph-mon.target
+  when: containerized_deployment | bool
+
+- name: enable ceph-mon.target
+  service:
+    name: ceph-mon.target
+    enabled: yes
+    daemon_reload: yes
+  when: containerized_deployment | bool
\ No newline at end of file
index bdcc1063ba500ef8a7cdaa929da9424844fc3f93..eb1c623dc7e143db9091c82449bb2f4883d1dc0b 100644 (file)
@@ -1,5 +1,6 @@
 [Unit]
 Description=Ceph Monitor
+PartOf=ceph-mon.target
 {% if container_binary == 'docker' %}
 After=docker.service
 Requires=docker.service
@@ -67,4 +68,4 @@ PIDFile=/%t/%n-pid
 {% endif %}
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target
diff --git a/roles/ceph-osd/files/ceph-osd.target b/roles/ceph-osd/files/ceph-osd.target
new file mode 100644 (file)
index 0000000..bb06303
--- /dev/null
@@ -0,0 +1,9 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph-osd@.service instances at once
+PartOf=ceph.target
+After=ceph-mon.target
+Before=ceph.target
+Wants=ceph.target ceph-mon.target
+
+[Install]
+WantedBy=multi-user.target ceph.target
\ No newline at end of file
index 367d49ec37968e26ffe1f5ce0711919eafe1072d..6d4685bb659a30461f7b853ae2658ef083c31e96 100644 (file)
@@ -7,3 +7,16 @@
     group: "root"
     mode: "0644"
   notify: restart ceph osds
+
+- name: generate systemd ceph-osd target file
+  copy:
+    src: ceph-osd.target
+    dest: /etc/systemd/system/ceph-osd.target
+  when: containerized_deployment | bool
+
+- name: enable ceph-osd.target
+  service:
+    name: ceph-osd.target
+    enabled: yes
+    daemon_reload: yes
+  when: containerized_deployment | bool
\ No newline at end of file
index 75ea7195ac512d4e6f68552d4090b7fdbd7eeb6a..dd82953855fa26686621c54ff6db7e0afc508091 100644 (file)
@@ -1,6 +1,7 @@
 # {{ ansible_managed }}
 [Unit]
 Description=Ceph OSD
+PartOf=ceph-osd.target
 {% if container_binary == 'docker' %}
 After=docker.service
 Requires=docker.service
@@ -79,4 +80,4 @@ PIDFile=/%t/%n-pid
 {% endif %}
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target
diff --git a/roles/ceph-rbd-mirror/files/ceph-rbd-mirror.target b/roles/ceph-rbd-mirror/files/ceph-rbd-mirror.target
new file mode 100644 (file)
index 0000000..7c67ce9
--- /dev/null
@@ -0,0 +1,7 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph-rbd-mirror@.service instances at once
+PartOf=ceph.target
+Before=ceph.target
+
+[Install]
+WantedBy=multi-user.target ceph.target
\ No newline at end of file
index 16dfb139ff914d806e1b946272a289348eabb1e6..60977e67170c4333559e18589e37070608f54098 100644 (file)
@@ -7,3 +7,16 @@
     group: "root"
     mode: "0644"
   notify: restart ceph rbdmirrors
+
+- name: generate systemd ceph-rbd-mirror target file
+  copy:
+    src: ceph-rbd-mirror.target
+    dest: /etc/systemd/system/ceph-rbd-mirror.target
+  when: containerized_deployment | bool
+
+- name: enable ceph-rbd-mirror.target
+  service:
+    name: ceph-rbd-mirror.target
+    enabled: yes
+    daemon_reload: yes
+  when: containerized_deployment | bool
\ No newline at end of file
index c9e87acdd773432189ed56c6ef15d50f680e7112..847e05f0f313e7ddd7682e8c020aff451207fc40 100644 (file)
@@ -1,5 +1,6 @@
 [Unit]
 Description=Ceph RBD mirror
+PartOf=ceph-rbd-mirror.target
 {% if container_binary == 'docker' %}
 After=docker.service
 Requires=docker.service
@@ -52,4 +53,4 @@ PIDFile=/%t/%n-pid
 {% endif %}
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target
diff --git a/roles/ceph-rgw/files/ceph-radosgw.target b/roles/ceph-rgw/files/ceph-radosgw.target
new file mode 100644 (file)
index 0000000..3f1b1c8
--- /dev/null
@@ -0,0 +1,9 @@
+[Unit]
+Description=ceph target allowing to start/stop all ceph-radosgw@.service instances at once
+PartOf=ceph.target
+After=ceph-mon.target
+Before=ceph.target
+Wants=ceph.target ceph-mon.target
+
+[Install]
+WantedBy=multi-user.target ceph.target
\ No newline at end of file
index ab114ca08340ff5eb4462dd36e8fe81f63a73669..08457ec2fc70cacf89973c8bd38190790ef2e3de 100644 (file)
@@ -6,4 +6,17 @@
     owner: "root"
     group: "root"
     mode: "0644"
-  notify: restart ceph rgws
\ No newline at end of file
+  notify: restart ceph rgws
+
+- name: generate systemd ceph-radosgw target file
+  copy:
+    src: ceph-radosgw.target
+    dest: /etc/systemd/system/ceph-radosgw.target
+  when: containerized_deployment | bool
+
+- name: enable ceph-radosgw.target
+  service:
+    name: ceph-radosgw.target
+    enabled: yes
+    daemon_reload: yes
+  when: containerized_deployment | bool
\ No newline at end of file
index 881b970abfbbb12bab2a087cdcf1204c930557ce..31a40606ab75a9a4b1d8143b965ba597cf911c74 100644 (file)
@@ -1,5 +1,6 @@
 [Unit]
 Description=Ceph RGW
+PartOf=ceph-radosgw.target
 {% if container_binary == 'docker' %}
 After=docker.service
 Requires=docker.service
@@ -66,4 +67,4 @@ PIDFile=/%t/%n-pid
 {% endif %}
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph.target