## bootstrap
ORIG_CONFIG=`mktemp -p $TMPDIR`
CONFIG=`mktemp -p $TMPDIR`
+MONCONFIG=`mktemp -p $TMPDIR`
KEYRING=`mktemp -p $TMPDIR`
IP=127.0.0.1
cat <<EOF > $ORIG_CONFIG
## deploy
# add mon.b
+cp $CONFIG $MONCONFIG
+echo "public addr = $IP:3301" >> $MONCONFIG
$CEPHADM deploy --name mon.b \
--fsid $FSID \
- --mon-ip $IP:3301 \
--keyring /var/lib/ceph/$FSID/mon.a/keyring \
--config $CONFIG
for u in ceph-$FSID@mon.b; do
systemctl is-enabled $u
systemctl is-active $u
done
+
+exit 0
+
for f in `seq 1 30`; do
if $CEPHADM shell --fsid $FSID \
--config $CONFIG --keyring $KEYRING -- \
if daemon_type in Ceph.daemons:
(config, keyring, crash_keyring) = get_config_and_both_keyrings()
- if daemon_type == 'mon':
- if args.mon_ip:
- config += '[mon.%s]\n\tpublic_addr = %s\n' % (daemon_id, args.mon_ip)
- elif args.mon_addrv:
- config += '[mon.%s]\n\tpublic_addrv = %s\n' % (daemon_id,
- args.mon_addrv)
- elif args.mon_network:
- config += '[mon.%s]\n\tpublic_network = %s\n' % (daemon_id,
- args.mon_network)
- else:
- raise Error('must specify --mon-ip or --mon-network')
-
(uid, gid) = extract_uid_gid()
c = get_container(args.fsid, daemon_type, daemon_id)
deploy_daemon(args.fsid, daemon_type, daemon_id, c, uid, gid,
parser_deploy.add_argument(
'--config-and-keyrings',
help='JSON file with config and keyrings for the daemon and crash agent')
- parser_deploy.add_argument(
- '--mon-ip',
- help='mon IP')
- parser_deploy.add_argument(
- '--mon-addrv',
- help='mon IPs (e.g., [v2:localipaddr:3300,v1:localipaddr:6789])')
- parser_deploy.add_argument(
- '--mon-network',
- help='mon network (CIDR)')
parser_deploy.add_argument(
'--osd-fsid',
help='OSD uuid, if creating an OSD container')
return self._remove_daemon(args)
def _create_daemon(self, daemon_type, daemon_id, host, keyring,
- extra_args=[]):
+ extra_args=[], extra_config=None):
name = '%s.%s' % (daemon_type, daemon_id)
# generate config
ret, config, err = self.mon_command({
"prefix": "config generate-minimal-conf",
})
+ if extra_config:
+ config += extra_config
ret, crash_keyring, err = self.mon_command({
'prefix': 'auth get-or-create',
})
# infer whether this is a CIDR network, addrvec, or plain IP
+ extra_config = '[mon.%s]\n' % name
if '/' in network:
- extra_args = ['--mon-network', network]
+ extra_config += 'public network = %s\n' % network
elif network.startswith('[v') and network.endswith(']'):
- extra_args = ['--mon-addrv', network]
+ extra_config += 'public addrv = %s\n' % network
elif ':' not in network:
- extra_args = ['--mon-ip', network]
+ extra_config += 'public addr = %s\n' % network
else:
raise RuntimeError('Must specify a CIDR network, ceph addrvec, or plain IP: \'%s\'' % network)
return self._create_daemon('mon', name or host, host, keyring,
- extra_args=extra_args)
+ extra_config=extra_config)
def update_mons(self, spec):
# type: (orchestrator.StatefulServiceSpec) -> orchestrator.Completion
--allow-overwrite
chmod 644 k c
-if [ -n "$ip2" ]; then
- # mon.b
- $CEPHADM $A \
- --image $image \
- deploy --name mon.b \
- --fsid $fsid \
- --mon-addrv "[v2:$ip2:3300,v1:$ip2:6789]" \
- --keyring /var/lib/ceph/$fsid/mon.a/keyring \
- --config c
-fi
+# mon.b
+cp c c.mon
+echo "public addrv = [v2:$ip:3301,v1:$ip:6790]" >> c.mon
+$CEPHADM $A \
+ --image $image \
+ deploy --name mon.b \
+ --fsid $fsid \
+ --keyring /var/lib/ceph/$fsid/mon.a/keyring \
+ --config c.mon
+rm c.mon
# mgr.b
bin/ceph -c c -k k auth get-or-create mgr.y \