os.rename(args.unit_dir + '/ceph-%s.target.new' % fsid,
args.unit_dir + '/ceph-%s.target' % fsid)
if not existed:
- subprocess.check_output(['systemctl', 'enable', 'ceph-%s.target' % fsid])
- subprocess.check_output(['systemctl', 'start', 'ceph-%s.target' % fsid])
+ call_throws(['systemctl', 'enable', 'ceph-%s.target' % fsid])
+ call_throws(['systemctl', 'start', 'ceph-%s.target' % fsid])
+ # logrotate for the cluster
+ with open(args.logrotate_dir + '/ceph-%s' % fsid, 'w') as f:
+ """
+ This is a bit sloppy in that the killall/pkill will touch all ceph daemons
+ in all containers, but I don't see an elegant way to send SIGHUP *just* to
+ the daemons for this cluster. (1) systemd kill -s will get the signal to
+ podman, but podman will exit. (2) podman kill will get the signal to the
+ first child (bash), but that isn't the ceph daemon. This is simpler and
+ should be harmless.
+ """
+ f.write("""# created by ceph-daemon
+ /var/log/ceph/%s/*.log {
+ rotate 7
+ daily
+ compress
+ sharedscripts
+ postrotate
+ killall -q -1 ceph-mon ceph-mgr ceph-mds ceph-osd ceph-fuse radosgw || pkill -1 -x "ceph-mon|ceph-mgr|ceph-mds|ceph-osd|ceph-fuse|radosgw" || true
+ endscript
+ missingok
+ notifempty
+ su root ceph
+ }
+ """ % fsid)
+
def deploy_crash(fsid, uid, gid, config, keyring):
crash_dir = os.path.join(args.data_dir, fsid, 'crash')
makedirs(crash_dir, uid, gid, DATA_DIR_MODE)
# FIXME: stop + disable individual daemon units, too?
# rm units
- subprocess.check_output(['rm', '-f', args.unit_dir +
+ call_throws(['rm', '-f', args.unit_dir +
'/ceph-%s@.service' % args.fsid])
- subprocess.check_output(['rm', '-f', args.unit_dir +
- '/ceph-%s-crash.service' % args.fsid])
- subprocess.check_output(['rm', '-f', args.unit_dir +
+ call_throws(['rm', '-f', args.unit_dir +
+ '/ceph-%s-crash@.service' % args.fsid])
+ call_throws(['rm', '-f', args.unit_dir +
'/ceph-%s.target' % args.fsid])
- subprocess.check_output(['rm', '-rf',
+ call_throws(['rm', '-rf',
args.unit_dir + '/ceph-%s.target.wants' % args.fsid])
# rm data
- subprocess.check_output(['rm', '-rf', args.data_dir + '/' + args.fsid])
+ call_throws(['rm', '-rf', args.data_dir + '/' + args.fsid])
# rm logs
- subprocess.check_output(['rm', '-rf', args.log_dir + '/' + args.fsid])
- subprocess.check_output(['rm', '-rf', args.log_dir +
+ call_throws(['rm', '-rf', args.log_dir + '/' + args.fsid])
+ call_throws(['rm', '-rf', args.log_dir +
'/*.wants/ceph-%s@*' % args.fsid])
+ # rm logrotate config
+ call_throws(['rm', '-f', args.logrotate_dir + '/ceph-%s' % args.fsid])
##################################