'--default-log-to-file=false',
'--default-log-to-stderr=true',
]
- if fsid and daemon_id:
- r += ['--default-admin-socket',
- '/var/run/ceph/' + fsid + '-' + daemon_type + '.' + daemon_id +
- '.asok']
r += ['--setuser', 'ceph']
r += ['--setgroup', 'ceph']
return r
def get_container_mounts(fsid, daemon_type, daemon_id):
mounts = {}
if fsid:
+ mounts['/var/run/ceph/%s' % fsid] = '/var/run/ceph:z'
log_dir = get_log_dir(fsid)
mounts[log_dir] = '/var/log/ceph:z'
mounts['/var/lib/ceph/%s/crash' % fsid] = '/var/lib/ceph/crash:z'
)
pc.run()
- deploy_daemon_units(fsid, daemon_type, daemon_id, c)
+ deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c)
-def deploy_daemon_units(fsid, daemon_type, daemon_id, c,
+def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
enable=True, start=True):
# cmd
data_dir = get_data_dir(fsid, daemon_type, daemon_id)
# systemd
install_base_units(fsid)
- unit = get_unit_file(fsid)
+ unit = get_unit_file(fsid, uid, gid)
unit_file = 'ceph-%s@.service' % (fsid)
with open(args.unit_dir + '/' + unit_file + '.new', 'w') as f:
f.write(unit)
subprocess.check_output(['systemctl', 'enable', unit_name])
subprocess.check_output(['systemctl', 'start', unit_name])
-def get_unit_file(fsid):
+def get_unit_file(fsid, uid, gid):
u = """[Unit]
Description=Ceph daemon for {fsid}
LimitNPROC=1048576
EnvironmentFile=-/etc/environment
ExecStartPre=-{podman_path} rm ceph-{fsid}-%i
-ExecStartPre=-mkdir -p /var/run/ceph
+ExecStartPre=-install -d -m0770 -o {uid} -g {gid} /var/run/ceph/{fsid}
ExecStart={data_dir}/{fsid}/%i/cmd
ExecStop=-{podman_path} stop ceph-{fsid}-%i
-ExecStopPost=-/bin/rm -f /var/run/ceph/{fsid}-%i.asok
Restart=on-failure
RestartSec=10s
TimeoutStartSec=120
""".format(
podman_path=podman_path,
fsid=fsid,
+ uid=uid,
+ gid=gid,
data_dir=args.data_dir)
return u
f.write(config)
mon_c = get_container(fsid, 'mon', mon_id)
- deploy_daemon_units(fsid, 'mon', mon_id, mon_c)
+ deploy_daemon_units(fsid, uid, gid, 'mon', mon_id, mon_c)
logger.info('Waiting for mon to start...')
while True:
logger.info('Creating new units...')
c = get_container(fsid, daemon_type, daemon_id)
- deploy_daemon_units(fsid, daemon_type, daemon_id, c,
+ deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
enable=True, # unconditionally enable the new unit
start=active)
else: