2017-04-14 20:03:22 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
source ./common.sh
|
|
|
|
|
2017-04-14 20:42:21 +00:00
|
|
|
USAGE="Usage: $(basename $0) -e \<etcd_ip\> [-n \<network\> -p \<ui_port\>]"
|
|
|
|
|
|
|
|
while [[ $# -gt 1 ]]
|
|
|
|
do
|
|
|
|
key="$1"
|
|
|
|
|
|
|
|
case $key in
|
|
|
|
-e|--etcd-ip)
|
|
|
|
etcd_ip="$2"
|
|
|
|
shift # past argument
|
|
|
|
;;
|
|
|
|
-n|--network)
|
|
|
|
network="$2"
|
|
|
|
shift # past argument
|
|
|
|
;;
|
|
|
|
-p|--ui-port)
|
|
|
|
port="$2"
|
|
|
|
shift # past argument
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# unknown
|
|
|
|
# option
|
|
|
|
echo ${USAGE}
|
|
|
|
break
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "$etcd_ip" == "" ]; then
|
|
|
|
echo ${USAGE}
|
2017-04-14 20:03:22 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2017-04-14 20:42:21 +00:00
|
|
|
network_option=
|
|
|
|
if [ "$network" != "" ]; then
|
|
|
|
network_option="--network ${network}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
ui_port=8080
|
|
|
|
if [ "$port" != "" ]; then
|
|
|
|
ui_port=$port
|
|
|
|
fi
|
|
|
|
|
2017-04-14 20:03:22 +00:00
|
|
|
set +e
|
2017-04-14 21:55:00 +00:00
|
|
|
iscsiadm_check=`iscsiadm --version > /dev/null 2>&1`
|
2017-04-14 20:03:22 +00:00
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo Cannot find \`iscsiadm\` on the host, please install \`open-iscsi\` package
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
set -e
|
|
|
|
|
2017-04-14 20:42:21 +00:00
|
|
|
|
2017-04-14 20:03:22 +00:00
|
|
|
LONGHORN_ENGINE_IMAGE="rancher/longhorn-engine:046b5a5"
|
2017-04-14 20:42:21 +00:00
|
|
|
LONGHORN_MANAGER_IMAGE="rancher/longhorn-manager:5329795"
|
|
|
|
LONGHORN_DRIVER_IMAGE="imikushin/storage-longhorn:8b1bb5c"
|
2017-04-14 21:18:59 +00:00
|
|
|
LONGHORN_UI_IMAGE="rancher/longhorn-ui:1c6e708"
|
2017-04-14 20:03:22 +00:00
|
|
|
|
2017-04-14 20:42:21 +00:00
|
|
|
LONGHORN_ENGINE_BINARY_NAME="longhorn-engine-binary"
|
2017-04-14 20:03:22 +00:00
|
|
|
LONGHORN_MANAGER_NAME="longhorn-manager"
|
|
|
|
LONGHORN_DRIVER_NAME="longhorn-driver"
|
|
|
|
LONGHORN_UI_NAME="longhorn-ui"
|
|
|
|
|
|
|
|
# longhorn-binary first, provides binary to longhorn-manager
|
|
|
|
cleanup ${LONGHORN_ENGINE_BINARY_NAME}
|
|
|
|
|
|
|
|
docker run --name ${LONGHORN_ENGINE_BINARY_NAME} \
|
|
|
|
--network none \
|
|
|
|
${LONGHORN_ENGINE_IMAGE} \
|
|
|
|
/bin/bash
|
|
|
|
echo ${LONGHORN_ENGINE_BINARY_NAME} is ready
|
|
|
|
|
|
|
|
# now longhorn-manager
|
|
|
|
cleanup ${LONGHORN_MANAGER_NAME}
|
|
|
|
|
|
|
|
docker run -d \
|
|
|
|
--name ${LONGHORN_MANAGER_NAME} \
|
2017-04-14 20:42:21 +00:00
|
|
|
${network_option} \
|
2017-04-14 20:03:22 +00:00
|
|
|
--privileged \
|
|
|
|
--uts host \
|
|
|
|
-v /dev:/host/dev \
|
|
|
|
-v /var/run:/var/run \
|
|
|
|
-v /var/lib/rancher/longhorn:/var/lib/rancher/longhorn \
|
|
|
|
--volumes-from ${LONGHORN_ENGINE_BINARY_NAME} \
|
|
|
|
${LONGHORN_MANAGER_IMAGE} \
|
|
|
|
launch-manager -d \
|
|
|
|
--orchestrator docker \
|
|
|
|
--engine-image ${LONGHORN_ENGINE_IMAGE} \
|
|
|
|
--etcd-servers http://${etcd_ip}:2379
|
|
|
|
echo ${LONGHORN_MANAGER_NAME} is ready
|
|
|
|
|
|
|
|
# finally longhorn-driver
|
|
|
|
cleanup ${LONGHORN_DRIVER_NAME}
|
|
|
|
|
|
|
|
docker run -d \
|
|
|
|
--name ${LONGHORN_DRIVER_NAME} \
|
|
|
|
--network none \
|
|
|
|
--privileged \
|
|
|
|
-v /run:/run \
|
|
|
|
-v /var/run:/var/run \
|
|
|
|
-v /dev:/host/dev \
|
|
|
|
-v /var/lib/rancher/volumes:/var/lib/rancher/volumes:shared \
|
|
|
|
${LONGHORN_DRIVER_IMAGE}
|
|
|
|
echo ${LONGHORN_DRIVER_NAME} is ready
|
|
|
|
|
|
|
|
manager_ip=$(get_container_ip ${LONGHORN_MANAGER_NAME})
|
|
|
|
|
|
|
|
cleanup ${LONGHORN_UI_NAME}
|
2017-04-14 20:42:21 +00:00
|
|
|
|
2017-04-14 20:03:22 +00:00
|
|
|
docker run -d \
|
|
|
|
--name ${LONGHORN_UI_NAME} \
|
2017-04-14 20:42:21 +00:00
|
|
|
${network_option} \
|
|
|
|
-p ${ui_port}:8000/tcp \
|
2017-04-14 20:03:22 +00:00
|
|
|
-e LONGHORN_MANAGER_IP=http://${manager_ip}:9500 \
|
|
|
|
${LONGHORN_UI_IMAGE}
|
|
|
|
echo ${LONGHORN_UI_NAME} is ready
|
|
|
|
|
|
|
|
echo
|
2017-04-14 20:42:21 +00:00
|
|
|
echo Longhorn is up at port ${ui_port}
|