]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: add templates for new systemd unit files
authorJohn Mulligan <jmulligan@redhat.com>
Fri, 17 Nov 2023 19:33:32 +0000 (14:33 -0500)
committerJohn Mulligan <jmulligan@redhat.com>
Tue, 2 Jan 2024 14:30:20 +0000 (09:30 -0500)
Add templates that will be used for advanced systemd services: sidecars,
init containers, and drop-in files to glue them all together.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
src/cephadm/cephadmlib/templates/dropin.service.j2 [new file with mode: 0644]
src/cephadm/cephadmlib/templates/init_ctr.service.j2 [new file with mode: 0644]
src/cephadm/cephadmlib/templates/sidecar.service.j2 [new file with mode: 0644]
src/cephadm/cephadmlib/templating.py

diff --git a/src/cephadm/cephadmlib/templates/dropin.service.j2 b/src/cephadm/cephadmlib/templates/dropin.service.j2
new file mode 100644 (file)
index 0000000..6e261f3
--- /dev/null
@@ -0,0 +1,9 @@
+# generated by cephadm
+[Unit]
+{%- if enable_init_containers %}
+Wants={{ identity.init_service_name }}
+{%- endif %}
+{%- for sidecar in sidecar_ids %}
+Wants={{ sidecar.sidecar_service_name }}
+{%- endfor %}
+
diff --git a/src/cephadm/cephadmlib/templates/init_ctr.service.j2 b/src/cephadm/cephadmlib/templates/init_ctr.service.j2
new file mode 100644 (file)
index 0000000..1562a5b
--- /dev/null
@@ -0,0 +1,33 @@
+# generated by cephadm
+[Unit]
+Description=Ceph Init Containers for %i on {{ identity.fsid }}
+After=network-online.target local-fs.target time-sync.target
+Wants=network-online.target local-fs.target time-sync.target
+{%- if has_docker_engine %}
+After=docker.service
+Requires=docker.service
+{%- endif %}
+Before=ceph-{{ identity.fsid }}@%i.service
+
+PartOf=ceph-{{ identity.fsid }}.target
+Before=ceph-{{ identity.fsid }}.target
+
+[Service]
+LimitNOFILE=1048576
+LimitNPROC=1048576
+EnvironmentFile=-/etc/environment
+ExecStart=/bin/bash {{ ctx.data_dir }}/{{ identity.fsid }}/%i/init_containers.run
+Restart=on-failure
+RestartSec=10s
+TimeoutStopSec=120
+StartLimitInterval=30min
+StartLimitBurst=5
+Type=oneshot
+RemainAfterExit=yes
+{%- if has_podman_split_version %}
+Delegate=yes
+{%- endif %}
+
+[Install]
+WantedBy=ceph-{{ identity.fsid }}.target
+
diff --git a/src/cephadm/cephadmlib/templates/sidecar.service.j2 b/src/cephadm/cephadmlib/templates/sidecar.service.j2
new file mode 100644 (file)
index 0000000..74e92cf
--- /dev/null
@@ -0,0 +1,41 @@
+# generated by cephadm
+[Unit]
+Description=Ceph sidecar %i for {{ sidecar.fsid }}
+After=network-online.target local-fs.target time-sync.target
+Wants=network-online.target local-fs.target time-sync.target
+{%- if has_docker_engine %}
+After=docker.service
+Requires=docker.service
+{%- endif %}
+After={{ primary.service_name }}
+
+PartOf=ceph-{{ sidecar.fsid }}.target
+Before=ceph-{{ sidecar.fsid }}.target
+
+[Service]
+LimitNOFILE=1048576
+LimitNPROC=1048576
+EnvironmentFile=-/etc/environment
+ExecStart=/bin/bash {{ sidecar_script }} start
+ExecStop=/bin/bash {{ sidecar_script }} stop
+ExecStopPost=-/bin/bash {{ sidecar_script }} poststop
+KillMode=none
+Restart=on-failure
+RestartSec=10s
+TimeoutStartSec=200
+TimeoutStopSec=120
+StartLimitInterval=30min
+StartLimitBurst=5
+{%- if has_podman_engine %}
+ExecStartPre=-/bin/rm -f %t/%n-pid %t/%n-cid
+ExecStopPost=-/bin/rm -f %t/%n-pid %t/%n-cid
+Type=forking
+PIDFile=%t/%n-pid
+{%- if has_podman_split_version %}
+Delegate=yes
+{%- endif %}
+{%- endif %}
+
+[Install]
+WantedBy=ceph-{{ sidecar.fsid }}.target
+
index 5f4dda0560864fda415ca90e7d6f5a883696ca04..2f944fd328f83ef8ff320dd3b67d038f784fceaa 100644 (file)
@@ -22,6 +22,9 @@ class Templates(str, enum.Enum):
 
     ceph_service = 'ceph.service.j2'
     agent_service = 'agent.service.j2'
+    dropin_service = 'dropin.service.j2'
+    init_ctr_service = 'init_ctr.service.j2'
+    sidecar_service = 'sidecar.service.j2'
     cluster_logrotate_config = 'cluster.logrotate.config.j2'
     cephadm_logrotate_config = 'cephadm.logrotate.config.j2'