From 3ea514c5525cd21722ef3fe9b90363c21e483596 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 2 Mar 2021 10:35:41 -0600 Subject: [PATCH] cephadm: fix escaping/quoting of stderr-prefix arg for ceph daemons On some versions of podman doing --default-log-stderr-prefix="debug " seems to work okay, but on others it does not, producing lines like /usr/bin/ceph-mon: "debug "2021-02-26T15:30:36.266+0000 7f3d8a955700 4 rocksdb: Options.db_write_buffer_size: 0 Quote things properly for the unit.run bash script. Signed-off-by: Sage Weil --- src/cephadm/cephadm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 8b6fabbf5b9..cdd7e8a76a8 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -59,6 +59,7 @@ import os import platform import pwd import random +import shlex import shutil import socket import string @@ -2068,7 +2069,7 @@ def get_daemon_args(ctx, fsid, daemon_type, daemon_id): '--setgroup', 'ceph', '--default-log-to-file=false', '--default-log-to-stderr=true', - '--default-log-stderr-prefix="debug "', + '--default-log-stderr-prefix=debug ', ] if daemon_type == 'mon': r += [ @@ -2592,10 +2593,15 @@ def _write_container_cmd_to_bash(ctx, file_obj, container, comment=None, backgro file_obj.write('! '+ ' '.join(container.rm_cmd()) + ' 2> /dev/null\n') # Sometimes, `podman rm` doesn't find the container. Then you'll have to add `--storage` if 'podman' in ctx.container_path: - file_obj.write('! '+ ' '.join(container.rm_cmd(storage=True)) + ' 2> /dev/null\n') + file_obj.write( + '! ' + + ' '.join([shlex.quote(a) for a in container.rm_cmd(storage=True)]) + + ' 2> /dev/null\n') # container run command - file_obj.write(' '.join(container.run_cmd()) + (' &' if background else '') + '\n') + file_obj.write( + ' '.join([shlex.quote(a) for a in container.run_cmd()]) + + (' &' if background else '') + '\n') def deploy_daemon_units( -- 2.39.5