From f0e32316481eff196c99f5a63780e39ab6df82b3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 4 Oct 2019 11:25:10 -0500 Subject: [PATCH] ceph-daemon: support docker; prefer podman Signed-off-by: Sage Weil --- src/ceph-daemon | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/ceph-daemon b/src/ceph-daemon index 1fb71d0a53e..8e9abe383cd 100755 --- a/src/ceph-daemon +++ b/src/ceph-daemon @@ -6,6 +6,8 @@ LOG_DIR='/var/log/ceph' UNIT_DIR='/etc/systemd/system' VERSION='unknown development version' +PODMAN_PREFERENCE = ['podman', 'docker'] # prefer podman to docker + """ You can invoke ceph-daemon in two ways: @@ -49,6 +51,8 @@ except: logging.basicConfig(level=logging.INFO) +podman_path = None + ################################## def get_hostname(): @@ -370,10 +374,10 @@ Before=ceph-{fsid}.target LimitNOFILE=1048576 LimitNPROC=1048576 EnvironmentFile=-/etc/environment -ExecStartPre=-/usr/bin/podman rm ceph-{fsid}-%i +ExecStartPre=-{podman_path} rm ceph-{fsid}-%i ExecStartPre=-mkdir -p /var/run/ceph ExecStart={data_dir}/{fsid}/%i/cmd -ExecStop=-/usr/bin/podman stop ceph-{fsid}-%i +ExecStop=-{podman_path} stop ceph-{fsid}-%i ExecStopPost=-/bin/rm -f /var/run/ceph/{fsid}-%i.asok Restart=on-failure RestartSec=10s @@ -384,7 +388,10 @@ StartLimitBurst=5 [Install] WantedBy=ceph-{fsid}.target -""".format(fsid=fsid, data_dir=args.data_dir) +""".format( + podman_path=podman_path, + fsid=fsid, + data_dir=args.data_dir) return u def gen_ssh_key(fsid): @@ -432,7 +439,7 @@ class CephContainer: ] cname = ['--name', self.cname] if self.cname else [] return [ - find_program('podman'), + podman_path, 'run', '--rm', '--net=host', @@ -450,7 +457,7 @@ class CephContainer: '-e', f'NODE_NAME={get_hostname()}', ] return [ - find_program('podman'), + podman_path, 'run', '-it', '--net=host', @@ -462,7 +469,7 @@ class CephContainer: def exec_cmd(self, cmd): return [ - find_program('podman'), + podman_path, 'exec', '-it', self.cname, @@ -1001,6 +1008,10 @@ parser.add_argument( '--image', default=DEFAULT_IMAGE, help='container image') +parser.add_argument( + '--docker', + action='store_true', + help='use docker instead of podman') parser.add_argument( '--data-dir', default=DATA_DIR, @@ -1225,6 +1236,20 @@ except NameError: av = sys.argv[1:] args = parser.parse_args(av) + +# podman or docker? +if args.docker: + podman_path = find_program('docker') +else: + for i in PODMAN_PREFERENCE: + try: + podman_path = find_program(i) + break + except: + logging.debug('could not locate %s' % i) + if not podman_path: + raise RuntimeError('unable to locate any of %s' % PODMAN_PREFERENCE) + if 'func' not in args: sys.stderr.write('No command specified; pass -h or --help for usage\n') sys.exit(1) -- 2.39.5