From 53e1c7d47349daae1dd6981ab8f00b9e17cf60ae Mon Sep 17 00:00:00 2001 From: John Mulligan Date: Fri, 17 Nov 2023 14:33:32 -0500 Subject: [PATCH] cephadm: add templates for new systemd unit files 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 --- .../cephadmlib/templates/dropin.service.j2 | 9 ++++ .../cephadmlib/templates/init_ctr.service.j2 | 33 +++++++++++++++ .../cephadmlib/templates/sidecar.service.j2 | 41 +++++++++++++++++++ src/cephadm/cephadmlib/templating.py | 3 ++ 4 files changed, 86 insertions(+) create mode 100644 src/cephadm/cephadmlib/templates/dropin.service.j2 create mode 100644 src/cephadm/cephadmlib/templates/init_ctr.service.j2 create mode 100644 src/cephadm/cephadmlib/templates/sidecar.service.j2 diff --git a/src/cephadm/cephadmlib/templates/dropin.service.j2 b/src/cephadm/cephadmlib/templates/dropin.service.j2 new file mode 100644 index 0000000000000..6e261f33beaf5 --- /dev/null +++ b/src/cephadm/cephadmlib/templates/dropin.service.j2 @@ -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 index 0000000000000..1562a5b18183e --- /dev/null +++ b/src/cephadm/cephadmlib/templates/init_ctr.service.j2 @@ -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 index 0000000000000..74e92cf6333c0 --- /dev/null +++ b/src/cephadm/cephadmlib/templates/sidecar.service.j2 @@ -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 + diff --git a/src/cephadm/cephadmlib/templating.py b/src/cephadm/cephadmlib/templating.py index 5f4dda0560864..2f944fd328f83 100644 --- a/src/cephadm/cephadmlib/templating.py +++ b/src/cephadm/cephadmlib/templating.py @@ -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' -- 2.39.5