From ff2e27ab30eeb4f77b77266663e34ae1c0491d7f Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 7 Nov 2019 08:17:46 -0600 Subject: [PATCH] ceph-daemon: add CLI helper to bootstrap Signed-off-by: Sage Weil --- src/ceph-daemon | 146 ++++++++++++++---------------------------------- 1 file changed, 41 insertions(+), 105 deletions(-) diff --git a/src/ceph-daemon b/src/ceph-daemon index 407a5dc216f..1c7d36d02b0 100755 --- a/src/ceph-daemon +++ b/src/ceph-daemon @@ -957,6 +957,23 @@ def command_bootstrap(): tmp_config.write(config) tmp_config.flush() + # a CLI helper to reduce our typing + def cli(cmd, extra_mounts=None): + mounts = { + log_dir: '/var/log/ceph:z', + tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', + tmp_config.name: '/etc/ceph/ceph.conf:z', + } + if extra_mounts: + for k, v in extra_mounts.items(): + mounts[k] = v + return CephContainer( + image=args.image, + entrypoint='/usr/bin/ceph', + args=cmd, + volume_mounts=mounts, + ).run() + logger.info('Waiting for mon to start...') while True: c = CephContainer( @@ -979,31 +996,19 @@ def command_bootstrap(): # assimilate and minimize config if not args.no_minimize_config: logger.info('Assimilating anything we can from ceph.conf...') - out = CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=['config', 'assimilate-conf', - '-i', '/var/lib/ceph/mon/ceph-%s/config' % mon_id], - volume_mounts={ - log_dir: '/var/log/ceph:z', - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % mon_id, - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + cli([ + 'config', 'assimilate-conf', + '-i', '/var/lib/ceph/mon/ceph-%s/config' % mon_id + ], { + mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % mon_id + }) logger.info('Generating new minimal ceph.conf...') - out = CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=['config', 'generate-minimal-conf', - '-o', '/var/lib/ceph/mon/ceph-%s/config' % mon_id], - volume_mounts={ - log_dir: '/var/log/ceph:z', - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % mon_id, - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + cli([ + 'config', 'generate-minimal-conf', + '-o', '/var/lib/ceph/mon/ceph-%s/config' % mon_id + ], { + mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % mon_id + }) # re-read our minimized config with open(mon_dir + '/config', 'r') as f: config = f.read() @@ -1039,17 +1044,7 @@ def command_bootstrap(): logger.info('Waiting for mgr to start...') while True: - out = CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=[ - 'status', '-f', 'json-pretty'], - volume_mounts={ - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % (mon_id), - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + out = cli(['status', '-f', 'json-pretty']) j = json.loads(out) if j.get('mgrmap', {}).get('available', False): break @@ -1077,36 +1072,14 @@ def command_bootstrap(): f.write(ssh_pub) logger.info('Wrote public SSH key to to %s' % args.output_pub_ssh_key) - CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=[ - 'config-key', - 'set', - 'mgr/ssh/ssh_identity_key', - '-i', '/tmp/key'], - volume_mounts={ - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % (mon_id), - tmp_key.name: '/tmp/key:z', - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() - CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=[ - 'config-key', - 'set', - 'mgr/ssh/ssh_identity_pub', - '-i', '/tmp/pub'], - volume_mounts={ - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % (mon_id), - tmp_pub.name: '/tmp/pub:z', - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + cli([ + 'config-key', + 'set', + 'mgr/ssh/ssh_identity_key', + '-i', '/tmp/key' + ], { + tmp_key.name: '/tmp/key:z', + }) logger.info('Adding key to root@localhost\'s authorized_keys...') if not os.path.exists('/root/.ssh'): @@ -1116,49 +1089,12 @@ def command_bootstrap(): f.write(ssh_pub.strip() + '\n') logger.info('Enabling ssh module...') - CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=[ - 'mgr', 'module', 'enable', 'ssh' - ], - volume_mounts={ - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % (mon_id), - tmp_pub.name: '/tmp/pub:z', - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + cli(['mgr', 'module', 'enable', 'ssh']) logger.info('Setting orchestrator backend to ssh...') - CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=[ - 'orchestrator', 'set', 'backend', 'ssh' - ], - volume_mounts={ - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % (mon_id), - log_dir: '/var/log/ceph:z', - tmp_pub.name: '/tmp/pub:z', - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + cli(['orchestrator', 'set', 'backend', 'ssh']) host = get_hostname() logger.info('Adding host %s...' % host) - CephContainer( - image=args.image, - entrypoint='/usr/bin/ceph', - args=[ - 'orchestrator', 'host', 'add', host - ], - volume_mounts={ - mon_dir: '/var/lib/ceph/mon/ceph-%s:z' % (mon_id), - tmp_pub.name: '/tmp/pub:z', - tmp_admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z', - tmp_config.name: '/etc/ceph/ceph.conf:z', - }, - ).run() + cli(['orchestrator', 'host', 'add', host]) logger.info('Bootstrap complete.') return 0 -- 2.39.5