2015-02-09 04:38:37 +00:00
|
|
|
#!/bin/bash
|
|
|
|
set -e
|
2016-05-23 06:11:26 +00:00
|
|
|
# help: build and run RancherOS, requires KVM local
|
2015-02-09 04:38:37 +00:00
|
|
|
|
|
|
|
cd $(dirname $0)/..
|
|
|
|
|
2016-08-28 15:57:52 +00:00
|
|
|
source ./scripts/run-common
|
2015-07-23 13:53:01 +00:00
|
|
|
|
2017-01-22 03:14:31 +00:00
|
|
|
MEMORY=2048
|
|
|
|
|
2015-04-29 06:38:04 +00:00
|
|
|
while [ "$#" -gt 0 ]; do
|
|
|
|
case $1 in
|
2017-07-17 11:14:45 +00:00
|
|
|
--debug)
|
|
|
|
DEBUG=1
|
|
|
|
;;
|
2016-11-17 03:45:28 +00:00
|
|
|
--iso)
|
|
|
|
BOOT_ISO=1
|
|
|
|
QEMU=0
|
|
|
|
QIND=0
|
2016-12-01 03:55:19 +00:00
|
|
|
REBUILD=0
|
2016-11-17 03:45:28 +00:00
|
|
|
;;
|
2016-12-15 01:54:43 +00:00
|
|
|
--boothd)
|
|
|
|
BOOT_HD=1
|
|
|
|
QEMU=0
|
|
|
|
QIND=0
|
|
|
|
REBUILD=0
|
|
|
|
;;
|
2017-06-02 00:33:47 +00:00
|
|
|
--resizehd)
|
|
|
|
shift 1
|
|
|
|
RESIZEHD=$1
|
|
|
|
;;
|
2017-03-06 02:54:39 +00:00
|
|
|
--pxe)
|
|
|
|
BOOT_PXE=1
|
2017-08-28 04:22:50 +00:00
|
|
|
FORMAT=0
|
2017-03-06 02:54:39 +00:00
|
|
|
;;
|
2017-04-25 20:30:23 +00:00
|
|
|
--do)
|
|
|
|
BOOT_HD=1
|
|
|
|
QEMU=0
|
|
|
|
QIND=0
|
|
|
|
REBUILD=0
|
|
|
|
CONSOLEDISPLAY=1
|
|
|
|
USE_OPENSTACK_IMG="digitalocean"
|
|
|
|
;;
|
|
|
|
--digitalocean)
|
|
|
|
BOOT_HD=1
|
|
|
|
QEMU=0
|
|
|
|
QIND=0
|
|
|
|
REBUILD=0
|
|
|
|
CONSOLEDISPLAY=1
|
|
|
|
USE_OPENSTACK_IMG="digitalocean"
|
|
|
|
;;
|
2017-03-28 06:04:49 +00:00
|
|
|
--openstack)
|
2017-04-25 20:30:23 +00:00
|
|
|
BOOT_HD=1
|
|
|
|
QEMU=0
|
|
|
|
QIND=0
|
|
|
|
REBUILD=0
|
|
|
|
CONSOLEDISPLAY=1
|
|
|
|
USE_OPENSTACK_IMG="openstack"
|
2017-03-28 06:04:49 +00:00
|
|
|
;;
|
2015-04-29 06:38:04 +00:00
|
|
|
--append)
|
|
|
|
shift 1
|
|
|
|
QEMU_APPEND="${QEMU_APPEND} $1"
|
|
|
|
;;
|
2017-08-11 17:09:47 +00:00
|
|
|
--rsyslog)
|
|
|
|
RSYSLOG=1
|
|
|
|
;;
|
2017-03-10 14:23:22 +00:00
|
|
|
--append-init)
|
|
|
|
shift 1
|
|
|
|
APPEND_INIT="${APPEND_INIT} $1"
|
|
|
|
;;
|
2017-01-22 03:14:31 +00:00
|
|
|
--memory)
|
|
|
|
shift 1
|
|
|
|
MEMORY="$1"
|
|
|
|
;;
|
2015-09-18 15:58:42 +00:00
|
|
|
--name)
|
|
|
|
shift 1
|
|
|
|
NAME="$1"
|
|
|
|
;;
|
2015-04-29 06:38:04 +00:00
|
|
|
--cloud-config)
|
|
|
|
shift 1
|
2015-09-18 15:58:42 +00:00
|
|
|
CLOUD_CONFIG="$1" || :
|
2015-04-29 06:38:04 +00:00
|
|
|
if [ ! -f ${CLOUD_CONFIG} ]; then
|
|
|
|
echo No such file: "'"${CLOUD_CONFIG}"'" 1>&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
;;
|
2017-02-16 23:12:40 +00:00
|
|
|
--cloud-config-iso)
|
|
|
|
CLOUD_CONFIG_FORMAT="iso"
|
|
|
|
;;
|
|
|
|
--cloud-config-fat)
|
|
|
|
CLOUD_CONFIG_FORMAT="fat"
|
|
|
|
;;
|
2016-06-23 04:49:57 +00:00
|
|
|
--second-drive)
|
|
|
|
SECOND_DRIVE=1
|
|
|
|
;;
|
2016-03-17 10:21:10 +00:00
|
|
|
--arch)
|
|
|
|
shift 1
|
|
|
|
ARCH="$1"
|
|
|
|
;;
|
2015-09-18 15:58:42 +00:00
|
|
|
--qemu)
|
2016-03-17 10:21:10 +00:00
|
|
|
QEMU=1
|
2015-09-18 15:58:42 +00:00
|
|
|
;;
|
|
|
|
--qind)
|
|
|
|
QIND=1
|
2015-09-23 06:57:16 +00:00
|
|
|
QEMU=0
|
2015-09-18 15:58:42 +00:00
|
|
|
;;
|
|
|
|
--kvm)
|
|
|
|
KVM=1
|
|
|
|
;;
|
2015-09-08 08:54:06 +00:00
|
|
|
--no-format)
|
|
|
|
FORMAT=0
|
|
|
|
;;
|
2015-10-06 13:41:04 +00:00
|
|
|
--no-rm-usr)
|
|
|
|
RM_USR=0
|
|
|
|
;;
|
2015-09-18 15:58:42 +00:00
|
|
|
--no-rebuild)
|
|
|
|
REBUILD=0
|
|
|
|
;;
|
2017-03-28 11:18:13 +00:00
|
|
|
--no-network)
|
|
|
|
NO_NETWORK=1
|
|
|
|
;;
|
2015-09-18 15:58:42 +00:00
|
|
|
--fresh)
|
|
|
|
FRESH=1
|
|
|
|
;;
|
2017-01-20 01:00:48 +00:00
|
|
|
--b2d)
|
|
|
|
# use together with --fresh to trigger boot2docker/machine auto-format
|
|
|
|
AUTOFORMAT=1
|
|
|
|
;;
|
2016-12-20 12:49:34 +00:00
|
|
|
--console)
|
2017-02-16 23:12:40 +00:00
|
|
|
# use the bios console, not serial (lets you see syslinux)
|
2016-12-20 12:49:34 +00:00
|
|
|
CONSOLEDISPLAY=1
|
2016-12-15 13:15:49 +00:00
|
|
|
;;
|
2017-06-13 09:33:27 +00:00
|
|
|
--netconsole)
|
|
|
|
NETCONSOLE=1
|
|
|
|
;;
|
2017-06-28 03:15:58 +00:00
|
|
|
--gui)
|
|
|
|
GUICONSOLE=1
|
|
|
|
;;
|
2016-08-28 15:57:52 +00:00
|
|
|
--installed)
|
2017-01-16 02:37:01 +00:00
|
|
|
./scripts/create-installed
|
2016-08-28 15:57:52 +00:00
|
|
|
INSTALLED=1
|
|
|
|
;;
|
2015-04-29 06:38:04 +00:00
|
|
|
*)
|
|
|
|
break
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
shift 1
|
|
|
|
done
|
2015-02-09 04:38:37 +00:00
|
|
|
|
2016-03-17 10:21:10 +00:00
|
|
|
if [ "$QEMU" == "1" ] && ! which qemu-system-${QEMUARCH}; then
|
|
|
|
QEMU=0
|
|
|
|
fi
|
|
|
|
|
2016-05-06 17:12:09 +00:00
|
|
|
if [[ ! -e ${KERNEL} || ! -e ${INITRD_SRC} ]]; then
|
|
|
|
echo "Failed to find ${KERNEL} or ${INITRD_SRC}" 1>&2
|
2015-02-09 04:38:37 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2016-11-17 03:45:28 +00:00
|
|
|
echo "initrd ${INITRD}"
|
2016-05-23 06:11:26 +00:00
|
|
|
if [ "$REBUILD" == "1" ] || [ ! -e ${INITRD} ]; then
|
2016-11-17 03:45:28 +00:00
|
|
|
echo "rebuilding ${INITRD} from ${INITRD_SRC}"
|
2016-05-06 17:12:09 +00:00
|
|
|
cp bin/ros ${INITRD_SRC}/usr/bin/ros
|
2016-06-01 04:11:03 +00:00
|
|
|
./scripts/hash-initrd
|
2016-05-06 17:12:09 +00:00
|
|
|
pushd ${INITRD_SRC} >/dev/null
|
|
|
|
find . | cpio -H newc -o | gzip -1 > ${INITRD}
|
|
|
|
popd >/dev/null
|
2015-02-09 04:38:37 +00:00
|
|
|
fi
|
|
|
|
|
2016-08-28 15:57:52 +00:00
|
|
|
KERNEL_ARGS="${DEFAULT_KERNEL_ARGS} ${QEMU_APPEND}"
|
2017-07-17 11:14:45 +00:00
|
|
|
if [ "$DEBUG" == "1" ]; then
|
|
|
|
KERNEL_ARGS="${KERNEL_ARGS} rancher.debug=true"
|
|
|
|
fi
|
2015-09-18 15:58:42 +00:00
|
|
|
if [ "$FORMAT" == "1" ]; then
|
2016-09-25 18:39:46 +00:00
|
|
|
KERNEL_ARGS="${KERNEL_ARGS} rancher.state.dev=LABEL=RANCHER_STATE rancher.state.autoformat=[/dev/sda,/dev/vda]"
|
2015-07-29 07:51:49 +00:00
|
|
|
fi
|
2015-10-06 13:41:04 +00:00
|
|
|
if [ "$RM_USR" == "1" ]; then
|
|
|
|
KERNEL_ARGS="${KERNEL_ARGS} rancher.rm_usr"
|
|
|
|
fi
|
2017-03-06 02:54:39 +00:00
|
|
|
if [ "$BOOT_PXE" == "1" ]; then
|
2017-07-14 03:15:43 +00:00
|
|
|
KERNEL_ARGS="console=tty1 rancher.autologin=tty1 ${KERNEL_ARGS}"
|
2017-05-16 00:42:56 +00:00
|
|
|
set -ex
|
2017-05-17 06:02:39 +00:00
|
|
|
PIXIECORE=$(which pixiecore)
|
|
|
|
sudo -E $PIXIECORE boot \
|
2017-03-06 02:54:39 +00:00
|
|
|
"${KERNEL}" \
|
|
|
|
"${INITRD}" \
|
|
|
|
--cmdline="${KERNEL_ARGS}"
|
|
|
|
return 0
|
|
|
|
fi
|
2017-08-11 17:09:47 +00:00
|
|
|
if [ "$RSYSLOG" == "1" ]; then
|
|
|
|
defaultDev=$(ip route | grep default | cut -f 5 -d " ")
|
|
|
|
devIP=$(ip a show dev $defaultDev | grep "inet " | cut -d " " -f 6 | cut -d / -f 1)
|
|
|
|
KERNEL_ARGS="${KERNEL_ARGS} loglevel=8 netconsole=+9999@10.0.2.14/,514@${devIP}/"
|
|
|
|
fi
|
|
|
|
# ELIDE_COMMANDLINE - MUST BE LAST
|
|
|
|
if [ "$APPEND_INIT" != "" ]; then
|
|
|
|
KERNEL_ARGS="${KERNEL_ARGS} -- ${APPEND_INIT}"
|
|
|
|
fi
|
2017-03-06 02:54:39 +00:00
|
|
|
|
2015-09-18 15:58:42 +00:00
|
|
|
if [ "$KVM" == "" ] && [ -c /dev/kvm ] && [ -r /dev/kvm ] && [ -w /dev/kvm ]; then
|
|
|
|
KVM=1
|
|
|
|
fi
|
2016-12-15 13:15:49 +00:00
|
|
|
set -x
|
2016-12-15 01:54:43 +00:00
|
|
|
if [ "$QEMU" == "1" ] || [ "$BOOT_ISO" == "1" ] || [ "$BOOT_HD" == "1" ]; then
|
2015-09-18 15:58:42 +00:00
|
|
|
HD=${BASE}/state/hd.img
|
2016-06-23 04:49:57 +00:00
|
|
|
HD2=${BASE}/state/hd2.img
|
|
|
|
[ "$FRESH" == "1" ] && rm -f ${HD} ${HD2} >/dev/null 2>&1 || :
|
|
|
|
|
2015-09-18 15:58:42 +00:00
|
|
|
if [ ! -e ${HD} ]; then
|
|
|
|
mkdir -p $(dirname ${HD})
|
2017-04-25 20:30:23 +00:00
|
|
|
if [ "$USE_OPENSTACK_IMG" != "" ]; then
|
2017-05-16 00:42:56 +00:00
|
|
|
if [ ! -e "dist/artifacts/rancheros-${USE_OPENSTACK_IMG}.img" ]; then
|
2017-03-28 06:04:49 +00:00
|
|
|
echo "please build the open stack image first (run make release)."
|
|
|
|
exit 1
|
|
|
|
fi
|
2017-05-16 00:42:56 +00:00
|
|
|
cp dist/artifacts/rancheros-${USE_OPENSTACK_IMG}.img $HD
|
|
|
|
qemu-img resize ${HD} 70GB
|
2017-02-16 23:12:40 +00:00
|
|
|
else
|
2017-03-28 06:04:49 +00:00
|
|
|
if [ ¨$INSTALLED¨ == ¨1¨ ]; then
|
|
|
|
./scripts/create-installed
|
|
|
|
else
|
|
|
|
if [ "$AUTOFORMAT" == "1" ]; then
|
|
|
|
echo "boot2docker, please format-me" | cat - /dev/zero | head -c 5242880 > format-flag.txt # 5M
|
|
|
|
qemu-img convert -f raw format-flag.txt -O qcow2 ${HD}
|
|
|
|
qemu-img resize ${HD} +10GB
|
|
|
|
else
|
|
|
|
qemu-img create -f qcow2 -o size=10G ${HD}
|
|
|
|
fi
|
|
|
|
fi
|
2016-12-01 03:55:19 +00:00
|
|
|
fi
|
2017-06-02 00:33:47 +00:00
|
|
|
else
|
|
|
|
if [ "$RESIZEHD" != "" ]; then
|
|
|
|
qemu-img resize ${HD} ${RESIZEHD}
|
|
|
|
fi
|
2015-09-18 15:58:42 +00:00
|
|
|
fi
|
2015-02-09 04:38:37 +00:00
|
|
|
|
2016-06-23 04:49:57 +00:00
|
|
|
if [ "$SECOND_DRIVE" == "1" ]; then
|
2016-12-22 10:14:35 +00:00
|
|
|
if [ "$FRESH" == "1" ]; then
|
|
|
|
qemu-img create -f qcow2 -o size=10G ${HD2}
|
|
|
|
fi
|
2016-06-23 04:49:57 +00:00
|
|
|
SECOND_DRIVE_ENABLE=$(eval "${hd["$ARCH"]} ${HD2}")
|
|
|
|
fi
|
2016-12-15 01:54:43 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$QIND" != "1" ]; then
|
2016-11-17 03:45:28 +00:00
|
|
|
CPU=${cpu["$ARCH"]}
|
|
|
|
if [ "$KVM" == "1" ] && [ "$ARCH" == "$HOST_ARCH" ]; then
|
|
|
|
KVM_ENABLE="-enable-kvm"
|
|
|
|
CPU="-cpu host"
|
|
|
|
fi
|
|
|
|
|
2017-03-28 06:04:49 +00:00
|
|
|
if [[ "${CLOUD_CONFIG}" == *".iso" ]]; then
|
|
|
|
CLOUD_CONFIG_DISK="-cdrom ${CLOUD_CONFIG}"
|
2015-09-18 15:58:42 +00:00
|
|
|
else
|
2017-03-28 06:04:49 +00:00
|
|
|
CCROOT=${BUILD}/cloud-config
|
|
|
|
rm -rf ${CCROOT}
|
|
|
|
mkdir -p ${CCROOT}
|
|
|
|
|
|
|
|
USER_DATA=${CCROOT}/openstack/latest/user_data
|
|
|
|
mkdir -p $(dirname ${USER_DATA})
|
|
|
|
rm -f ${USER_DATA} || :
|
|
|
|
if [ -n "$CLOUD_CONFIG" ]; then
|
|
|
|
cat ${CLOUD_CONFIG} > ${USER_DATA}
|
|
|
|
else
|
|
|
|
echo "#cloud-config" > ${USER_DATA}
|
|
|
|
echo "ssh_authorized_keys:" >> ${USER_DATA}
|
|
|
|
echo "- $(<${BASE}/assets/rancher.key.pub)" >> ${USER_DATA}
|
|
|
|
fi
|
|
|
|
case $CLOUD_CONFIG_FORMAT in
|
|
|
|
iso)
|
|
|
|
mkisofs -R -V config-2 -o ${BASE}/state/configdrive.iso ${CCROOT}
|
|
|
|
CLOUD_CONFIG_DISK="-cdrom ${BASE}/state/configdrive.iso"
|
|
|
|
;;
|
|
|
|
fat)
|
2017-06-06 01:30:54 +00:00
|
|
|
truncate --size 2M ${BASE}/state/configdrive.img
|
|
|
|
mkfs.vfat -n config-2 ${BASE}/state/configdrive.img
|
|
|
|
mcopy -osi ${BASE}/state/configdrive.img ${CCROOT}/* ::
|
|
|
|
CLOUD_CONFIG_DISK="-hdb ${BASE}/state/configdrive.img"
|
2017-03-28 06:04:49 +00:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
CLOUD_CONFIG_DISK="-fsdev local,security_model=passthrough,readonly,id=fsdev0,path=${CCROOT} \
|
|
|
|
-device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=config-2"
|
|
|
|
;;
|
|
|
|
esac
|
2015-07-28 16:56:04 +00:00
|
|
|
fi
|
2015-02-09 04:38:37 +00:00
|
|
|
|
2016-05-23 06:11:26 +00:00
|
|
|
HOME=${HOME:-/}
|
2016-12-04 11:27:06 +00:00
|
|
|
fi
|
|
|
|
|
2017-06-28 03:15:58 +00:00
|
|
|
if [ "$GUICONSOLE" == "" ]; then
|
|
|
|
# default serial console
|
|
|
|
DISPLAY_OPTS="-nographic -serial mon:stdio -display none"
|
|
|
|
if [ "$CONSOLEDISPLAY" == "1" ]; then
|
|
|
|
DISPLAY_OPTS="-curses"
|
|
|
|
fi
|
|
|
|
if [ "$NETCONSOLE" == "1" ]; then
|
|
|
|
# put ttyS1 on port 4444
|
|
|
|
DISPLAY_OPTS="${DISPLAY_OPTS} -serial tcp::4444,server"
|
|
|
|
KERNEL_ARGS="rancher.console=ttyS1 rancher.autologin=ttyS1 ${KERNEL_ARGS}"
|
|
|
|
fi
|
2016-12-20 12:49:34 +00:00
|
|
|
fi
|
|
|
|
|
2017-03-28 11:18:13 +00:00
|
|
|
if [ "${NO_NETWORK}" == "1" ]; then
|
|
|
|
NETWORK="-net none"
|
|
|
|
else
|
|
|
|
NETWORK="${network["$ARCH"]}"
|
|
|
|
fi
|
|
|
|
|
2016-12-04 11:27:06 +00:00
|
|
|
if [ "$QEMU" == "1" ]; then
|
2016-08-28 15:57:52 +00:00
|
|
|
if [ "$INSTALLED" == "1" ]; then
|
2016-11-17 03:45:28 +00:00
|
|
|
# kernel args only works when using -kernel
|
|
|
|
KERNEL_ARGS=""
|
|
|
|
else
|
|
|
|
INSTALLED_ARGS="-kernel ${KERNEL} -initrd ${INITRD}"
|
|
|
|
fi
|
|
|
|
set -x
|
|
|
|
exec qemu-system-${QEMUARCH} \
|
2016-12-20 12:49:34 +00:00
|
|
|
${DISPLAY_OPTS} \
|
2016-08-28 15:57:52 +00:00
|
|
|
-rtc base=utc,clock=host \
|
2016-11-17 03:45:28 +00:00
|
|
|
${INSTALLED_ARGS} \
|
|
|
|
-append "${KERNEL_ARGS}" \
|
2016-08-28 15:57:52 +00:00
|
|
|
${KVM_ENABLE} \
|
|
|
|
${CPU} \
|
|
|
|
${machine["$ARCH"]} \
|
2017-01-22 03:14:31 +00:00
|
|
|
-m $MEMORY \
|
2017-03-28 11:18:13 +00:00
|
|
|
${NETWORK} \
|
2016-08-28 15:57:52 +00:00
|
|
|
$(eval "${hd["$ARCH"]} ${HD}") \
|
|
|
|
${SECOND_DRIVE_ENABLE} \
|
|
|
|
-smp 1 \
|
2017-07-13 11:47:44 +00:00
|
|
|
-device virtio-rng-pci \
|
2017-02-16 23:12:40 +00:00
|
|
|
${CLOUD_CONFIG_DISK} \
|
2016-08-28 15:57:52 +00:00
|
|
|
-fsdev local,security_model=none,id=fsdev1,path=${HOME} \
|
|
|
|
-device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=home \
|
|
|
|
${QEMU_ARGS} \
|
|
|
|
"${@}"
|
2016-11-17 03:45:28 +00:00
|
|
|
|
2016-12-15 01:54:43 +00:00
|
|
|
elif [ "$BOOT_ISO" == "1" ] ||
|
|
|
|
[ "$BOOT_HD" == "1" ]; then
|
|
|
|
if [ "$BOOT_ISO" == "1" ]; then
|
|
|
|
ISO_OPTS="-boot d -cdrom ./dist/artifacts/rancheros.iso \
|
|
|
|
-fsdev local,security_model=none,id=fsdev1,path=${HOME} \
|
|
|
|
-device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=home "
|
|
|
|
echo "----- $ISO_OPTS"
|
|
|
|
fi
|
2016-11-17 03:45:28 +00:00
|
|
|
set -x
|
|
|
|
exec qemu-system-${QEMUARCH} \
|
2016-12-15 13:15:49 +00:00
|
|
|
${DISPLAY_OPTS} \
|
2017-03-28 06:04:49 +00:00
|
|
|
${CLOUD_CONFIG_DISK} \
|
2016-08-28 15:57:52 +00:00
|
|
|
-rtc base=utc,clock=host \
|
|
|
|
${KVM_ENABLE} \
|
|
|
|
${CPU} \
|
|
|
|
${machine["$ARCH"]} \
|
2017-01-27 02:48:05 +00:00
|
|
|
-m $MEMORY \
|
2017-03-28 11:18:13 +00:00
|
|
|
${NETWORK} \
|
2016-08-28 15:57:52 +00:00
|
|
|
$(eval "${hd["$ARCH"]} ${HD}") \
|
|
|
|
${SECOND_DRIVE_ENABLE} \
|
|
|
|
-smp 1 \
|
2017-07-13 11:47:44 +00:00
|
|
|
-device virtio-rng-pci \
|
2017-06-13 09:33:27 +00:00
|
|
|
${ISO_OPTS} \
|
|
|
|
"${@}"
|
2015-09-18 15:58:42 +00:00
|
|
|
elif [ "$QIND" == "1" ]; then
|
2015-06-19 20:26:56 +00:00
|
|
|
|
2015-09-18 15:58:42 +00:00
|
|
|
NAME=${NAME:-ros-qind}
|
2015-07-20 17:21:59 +00:00
|
|
|
|
2015-09-18 15:58:42 +00:00
|
|
|
if [ "$FRESH" == "1" ]; then
|
|
|
|
docker rm -fv ${NAME} >/dev/null 2>&1 || :
|
|
|
|
fi
|
|
|
|
if ! docker inspect ${NAME} >/dev/null 2>&1; then
|
|
|
|
if [ "$KVM" == "1" ]; then
|
|
|
|
KVM_ENABLE="--device=/dev/kvm:/dev/kvm"
|
|
|
|
fi
|
2015-07-20 17:21:59 +00:00
|
|
|
|
2015-09-18 15:58:42 +00:00
|
|
|
mkdir -p ./tmp
|
|
|
|
TMP=$(mktemp -d ./tmp/ros-qind-XXXXXX)
|
|
|
|
mkdir -p ${TMP}/stuff
|
|
|
|
trap "rm -rf ${TMP}" EXIT
|
|
|
|
ln ${CLOUD_CONFIG} ${KERNEL} ${INITRD} ./assets/rancher.key ./assets/rancher.key.pub ${TMP}/stuff/
|
2015-06-19 20:26:56 +00:00
|
|
|
|
2015-09-18 15:58:42 +00:00
|
|
|
KERNEL_FILE=$(basename ${KERNEL})
|
|
|
|
INITRD_FILE=$(basename ${INITRD})
|
|
|
|
|
|
|
|
if [ -n "$CLOUD_CONFIG" ]; then
|
|
|
|
CLOUD_CONFIG_ENABLE="--cloud-config /stuff/$(basename ${CLOUD_CONFIG})"
|
|
|
|
else
|
|
|
|
SSH_PUB_ENABLE="--ssh-pub /stuff/rancher.key.pub"
|
|
|
|
fi
|
|
|
|
|
2016-04-01 01:56:18 +00:00
|
|
|
set -x
|
2015-09-18 15:58:42 +00:00
|
|
|
docker create --name=${NAME} -it ${KVM_ENABLE} \
|
|
|
|
rancher/qind \
|
|
|
|
--hostname "rancher-dev" \
|
|
|
|
${CLOUD_CONFIG_ENABLE} \
|
|
|
|
${SSH_PUB_ENABLE} \
|
|
|
|
-m 1G -kernel /stuff/${KERNEL_FILE} -initrd /stuff/${INITRD_FILE} -append "${KERNEL_ARGS}" \
|
|
|
|
"${@}"
|
|
|
|
|
|
|
|
docker cp ${TMP}/stuff ${NAME}:/stuff
|
|
|
|
rm -rf ${TMP}
|
2015-09-03 14:06:09 +00:00
|
|
|
fi
|
2015-09-18 15:58:42 +00:00
|
|
|
exec docker start -ai ${NAME}
|
|
|
|
|
2015-06-19 20:26:56 +00:00
|
|
|
else
|
|
|
|
exit 42
|
2015-07-27 22:55:45 +00:00
|
|
|
fi
|