From 027a3d7e3d78769b7ce7fd8d092c27bcff1e1d32 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Wed, 5 Oct 2022 04:00:20 +0200 Subject: [PATCH] iscsi: do not use ceph/daemon entrypoint This changes the entrypoint used for the iscsigw containerized daemons in the systemd template. Signed-off-by: Guillaume Abrioux --- roles/ceph-iscsi-gw/tasks/containerized.yml | 8 ++++++++ .../ceph-iscsi-gw/templates/rbd-target-api.service.j2 | 7 ++++--- roles/ceph-iscsi-gw/templates/rbd-target-gw.service.j2 | 7 ++++--- roles/ceph-iscsi-gw/templates/tcmu-runner.service.j2 | 10 ++++++---- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/roles/ceph-iscsi-gw/tasks/containerized.yml b/roles/ceph-iscsi-gw/tasks/containerized.yml index bea446ded..c0369c04e 100644 --- a/roles/ceph-iscsi-gw/tasks/containerized.yml +++ b/roles/ceph-iscsi-gw/tasks/containerized.yml @@ -1,4 +1,12 @@ --- +- name: create /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} + file: + path: "/var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}" + state: directory + owner: "{{ ceph_uid }}" + group: "{{ ceph_uid }}" + mode: "{{ ceph_directories_mode }}" + - name: create rbd target log directories file: path: '/var/log/{{ item }}' diff --git a/roles/ceph-iscsi-gw/templates/rbd-target-api.service.j2 b/roles/ceph-iscsi-gw/templates/rbd-target-api.service.j2 index 6baf1293f..5683a0402 100644 --- a/roles/ceph-iscsi-gw/templates/rbd-target-api.service.j2 +++ b/roles/ceph-iscsi-gw/templates/rbd-target-api.service.j2 @@ -18,6 +18,7 @@ ExecStartPre=-/usr/bin/mkdir -p /var/log/rbd-target-api ExecStartPre=-/usr/bin/{{ container_binary }} stop rbd-target-api {% endif %} ExecStartPre=-/usr/bin/{{ container_binary }} rm rbd-target-api +ExecStartPre=-/usr/bin/sh -c "if ! grep -qs /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} /proc/mounts; then mount -t configfs none /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}; fi" ExecStart=/usr/bin/{{ container_binary }} run --rm \ {% if container_binary == 'podman' %} -d --log-driver journald --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ @@ -33,16 +34,16 @@ ExecStart=/usr/bin/{{ container_binary }} run --rm \ -v /lib/modules:/lib/modules \ -v /etc/ceph:/etc/ceph \ -v /var/log/rbd-target-api:/var/log/rbd-target-api:z \ - -e CLUSTER={{ cluster }} \ - -e CEPH_DAEMON=RBD_TARGET_API \ - -e CONTAINER_IMAGE={{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} \ + -v /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}:/sys/kernel/config \ --name=rbd-target-api \ + --entrypoint=/usr/bin/rbd-target-api \ {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} {% if container_binary == 'podman' %} ExecStop=-/usr/bin/sh -c "/usr/bin/{{ container_binary }} rm -f `cat /%t/%n-cid`" {% else %} ExecStopPost=-/usr/bin/{{ container_binary }} stop rbd-target-api {% endif %} +ExecStopPost=-/usr/bin/sh -c "if grep -qs /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} /proc/mounts; then umount /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}; fi" KillMode=none Restart=always RestartSec=10s diff --git a/roles/ceph-iscsi-gw/templates/rbd-target-gw.service.j2 b/roles/ceph-iscsi-gw/templates/rbd-target-gw.service.j2 index 754a22d0a..1d3a386a5 100644 --- a/roles/ceph-iscsi-gw/templates/rbd-target-gw.service.j2 +++ b/roles/ceph-iscsi-gw/templates/rbd-target-gw.service.j2 @@ -18,6 +18,7 @@ ExecStartPre=-/usr/bin/mkdir -p /var/log/rbd-target-gw ExecStartPre=-/usr/bin/{{ container_binary }} stop rbd-target-gw {% endif %} ExecStartPre=-/usr/bin/{{ container_binary }} rm rbd-target-gw +ExecStartPre=-/usr/bin/sh -c "if ! grep -qs /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} /proc/mounts; then mount -t configfs none /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}; fi" ExecStart=/usr/bin/{{ container_binary }} run --rm \ {% if container_binary == 'podman' %} -d --log-driver journald --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ @@ -33,16 +34,16 @@ ExecStart=/usr/bin/{{ container_binary }} run --rm \ -v /lib/modules:/lib/modules \ -v /etc/ceph:/etc/ceph \ -v /var/log/rbd-target-gw:/var/log/rbd-target-gw:z \ - -e CLUSTER={{ cluster }} \ - -e CEPH_DAEMON=RBD_TARGET_GW \ - -e CONTAINER_IMAGE={{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} \ + -v /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}:/sys/kernel/config \ --name=rbd-target-gw \ + --entrypoint=/usr/bin/rbd-target-gw \ {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} {% if container_binary == 'podman' %} ExecStop=-/usr/bin/sh -c "/usr/bin/{{ container_binary }} rm -f `cat /%t/%n-cid`" {% else %} ExecStopPost=-/usr/bin/{{ container_binary }} stop rbd-target-gw {% endif %} +ExecStopPost=-/usr/bin/sh -c "if grep -qs /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} /proc/mounts; then umount /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}; fi" KillMode=none Restart=always RestartSec=10s diff --git a/roles/ceph-iscsi-gw/templates/tcmu-runner.service.j2 b/roles/ceph-iscsi-gw/templates/tcmu-runner.service.j2 index c0dae539a..6391021bb 100644 --- a/roles/ceph-iscsi-gw/templates/tcmu-runner.service.j2 +++ b/roles/ceph-iscsi-gw/templates/tcmu-runner.service.j2 @@ -18,6 +18,7 @@ ExecStartPre=-/usr/bin/mkdir -p /var/log/tcmu-runner ExecStartPre=-/usr/bin/{{ container_binary }} stop tcmu-runner {% endif %} ExecStartPre=-/usr/bin/{{ container_binary }} rm tcmu-runner +ExecStartPre=-/usr/bin/sh -c "if ! grep -qs /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} /proc/mounts; then mount -t configfs none /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}; fi" ExecStart=/usr/bin/{{ container_binary }} run --rm \ {% if container_binary == 'podman' %} -d --log-driver journald --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ @@ -32,16 +33,17 @@ ExecStart=/usr/bin/{{ container_binary }} run --rm \ -v /lib/modules:/lib/modules \ -v /etc/ceph:/etc/ceph \ -v /var/log/tcmu-runner:/var/log/tcmu-runner:z \ - -e CLUSTER={{ cluster }} \ - -e CEPH_DAEMON=TCMU_RUNNER \ - -e CONTAINER_IMAGE={{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} \ + -v /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}:/sys/kernel/config \ --name=tcmu-runner \ - {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} + --entrypoint=tcmu-runner \ + {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} \ + --tcmu-log-dir /var/log/tcmu-runner {% if container_binary == 'podman' %} ExecStop=-/usr/bin/sh -c "/usr/bin/{{ container_binary }} rm -f `cat /%t/%n-cid`" {% else %} ExecStopPost=-/usr/bin/{{ container_binary }} stop tcmu-runner {% endif %} +ExecStopPost=-/usr/bin/sh -c "if grep -qs /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }} /proc/mounts; then umount /var/lib/ceph/iscsi.{{ ansible_facts['hostname'] }}; fi" KillMode=none Restart=always RestartSec=10s -- 2.39.5