if daemon_type == NFSGanesha.daemon_type:
envs.extend(NFSGanesha.get_container_envs())
+ # if using podman, set -d, --conmon-pidfile & --cidfile flags
+ # so service can have Type=Forking
+ if 'podman' in container_path:
+ runtime_dir = '/run'
+ container_args.extend(['-d',
+ '--conmon-pidfile',
+ runtime_dir + '/ceph-%s@%s.%s.service-pid' % (fsid, daemon_type, daemon_id),
+ '--cidfile',
+ runtime_dir + '/ceph-%s@%s.%s.service-cid' % (fsid, daemon_type, daemon_id)])
+
return CephContainer(
image=args.image,
entrypoint=entrypoint,
def get_unit_file(fsid):
# type: (str) -> str
+ extra_args = ''
+ if 'podman' in container_path:
+ extra_args = ('ExecStartPre=-/bin/rm -f /%t/%n-pid /%t/%n-cid\n'
+ 'ExecStopPost=-/bin/rm -f /%t/%n-pid /%t/%n-cid\n'
+ 'Type=forking\n'
+ 'PIDFile=/%t/%n-pid\n')
+
u = """# generated by cephadm
[Unit]
Description=Ceph %i for {fsid}
TimeoutStopSec=120
StartLimitInterval=30min
StartLimitBurst=5
-
+{extra_args}
[Install]
WantedBy=ceph-{fsid}.target
""".format(
container_path=container_path,
fsid=fsid,
- data_dir=args.data_dir)
+ data_dir=args.data_dir,
+ extra_args=extra_args)
+
return u
##################################