]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-daemon: add CLI helper to bootstrap
authorSage Weil <sage@redhat.com>
Thu, 7 Nov 2019 14:17:46 +0000 (08:17 -0600)
committerSage Weil <sage@redhat.com>
Thu, 7 Nov 2019 14:17:46 +0000 (08:17 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/ceph-daemon

index 407a5dc216f0704497ef8b31bf44a5b4aa47d86f..1c7d36d02b0bcef27823c7b8f00da696478dc02a 100755 (executable)
@@ -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