X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Finstall_osm.sh;h=7cdf8bc41102c5eedf12b93b10e885b475c06b34;hb=refs%2Fchanges%2F87%2F6087%2F3;hp=618799f7a7732df08cc16f99b6ede4f37cd7a130;hpb=41012606c202ebf1b978f8cb777e5cb95708bec6;p=osm%2Fdevops.git diff --git a/installers/install_osm.sh b/installers/install_osm.sh index 618799f7..7cdf8bc4 100755 --- a/installers/install_osm.sh +++ b/installers/install_osm.sh @@ -31,7 +31,8 @@ function usage(){ echo -e " --lxdimages: download lxd images from OSM repository instead of creating them from scratch" echo -e " -l : use specified repository url for lxd images" echo -e " -p : use specified repository path for lxd images" - echo -e " --lightweight: install lightweight build of OSM" + echo -e " --lightweight: install lightweight build of OSM (default installation)" + echo -e " --soui: install classic build of OSM (based on LXD containers, with SO and UI)" echo -e " --vimemu: additionally fetch, build, and deploy the VIM emulator as a docker container" echo -e " --develop: (deprecated, use '-b master') install OSM from source code using the master branch" # echo -e " --reconfigure: reconfigure the modules (DO NOT change NAT rules)" @@ -66,6 +67,36 @@ function uninstall(){ return 0 } +#Uninstall lightweight OSM: remove dockers +function uninstall_lightweight(){ + echo -e "\nUninstalling lightweight OSM" + docker stack rm osm + COUNTER=0 + result=11 + while [ ${COUNTER} -lt 30 ]; do + sleep 1 + result=$(docker stack ps osm | wc -l) + #echo "Dockers running: $result" + if [ "${result}" == "0" ]; then + break + fi + let COUNTER=COUNTER+1 + done + if [ "${result}" == "0" ]; then + echo "All dockers of the stack osm were removed" + else + FATAL "Some dockers of the stack osm could not be removed. Could not uninstall OSM in single shot. Try to uninstall again" + fi + sleep 5 + docker image rm osm/ro + docker image rm osm/lcm + docker image rm osm/light-ui + docker image rm osm/nbi + docker image rm osm/mon + docker image rm osm/pm + return 0 +} + #Configure NAT rules, based on the current IP addresses of containers function nat(){ echo -e "\nChecking required packages: iptables-persistent" @@ -503,7 +534,7 @@ function install_juju() { echo "Installing juju" sudo snap install juju --classic sudo dpkg-reconfigure -p medium lxd - juju bootstrap localhost osm + sg lxd -c "juju bootstrap localhost osm" echo "Finished installation of juju" } @@ -524,6 +555,8 @@ function generate_docker_images() { docker build ${LWTEMPDIR}/RO/lcm -t osm/lcm || ! echo "cannot build LCM docker image" >&2 git -C ${LWTEMPDIR} clone https://github.com/superfluidity/osm-light-ui.git docker build ${LWTEMPDIR}/osm-light-ui -t osm/light-ui -f ${LWTEMPDIR}/osm-light-ui/code/docker/Dockerfile +# git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/LW-UI +# docker build ${LWTEMPDIR}/LW-UI -t osm/light-ui -f ${LWTEMPDIR}/LW-UI/Dockerfile EONG echo "Finished generation of docker images" } @@ -531,7 +564,7 @@ EONG function generate_docker_env_files() { echo "Generating docker env files" OSMLCM_VCA_HOST=`juju show-controller|grep api-endpoints|awk -F\' '{print $2}'|awk -F\: '{print $1}'` - OSMLCM_VCA_SECRET=`grep password /home/ubuntu/.local/share/juju/accounts.yaml |awk '{print $2}'` + OSMLCM_VCA_SECRET=`grep password ${HOME}/.local/share/juju/accounts.yaml |awk '{print $2}'` MYSQL_ROOT_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` echo "OSMLCM_VCA_HOST=${OSMLCM_VCA_HOST}" |sudo tee ${OSM_DEVOPS}/installers/docker/lcm.env echo "OSMLCM_VCA_SECRET=${OSMLCM_VCA_SECRET}" |sudo tee -a ${OSM_DEVOPS}/installers/docker/lcm.env @@ -543,6 +576,11 @@ function generate_docker_env_files() { function deploy_lightweight() { echo "Deploying lightweight build" + if [ "${DEFAULT_MTU}" != "1500" ]; then + DOCKER_NETS=`sg docker -c "docker network list" | awk '{print $2}' | egrep -v "^ID$" | paste -d " " -s` + DOCKER_GW_NET=`sg docker -c "docker network inspect ${DOCKER_NETS}" | grep Subnet | awk -F\" '{print $4}' | egrep "^172" | sort -u | tail -1 | awk -F\. '{if ($2 != 255) print $1"."$2+1"."$3"."$4; else print "-1";}'` + sg docker -c "docker network create --subnet ${DOCKER_GW_NET} --opt com.docker.network.bridge.name=docker_gwbridge --opt com.docker.network.bridge.enable_icc=false --opt com.docker.network.bridge.enable_ip_masquerade=true --opt com.docker.network.driver.mtu=${DEFAULT_MTU} docker_gwbridge" + fi newgrp docker << EONG docker swarm init --advertise-addr ${DEFAULT_IP} docker network create --driver=overlay --attachable --opt com.docker.network.driver.mtu=${DEFAULT_MTU} netOSM @@ -559,6 +597,16 @@ function install_lightweight() { DEFAULT_IF=`route -n |awk '$1~/^0.0.0.0/ {print $8}'` DEFAULT_IP=`ip -o -4 a |grep ${DEFAULT_IF}|awk '{split($4,a,"/"); print a[1]}'` DEFAULT_MTU=$(ip addr show ${DEFAULT_IF} | perl -ne 'if (/mtu\s(\d+)/) {print $1;}') + need_packages_lw="lxd" + echo -e "Checking required packages: $need_packages_lw" + dpkg -l $need_packages_lw &>/dev/null \ + || ! echo -e "One or several required packages are not installed. Updating apt cache requires root privileges." \ + || sudo apt-get update \ + || FATAL "failed to run apt-get update" + dpkg -l $need_packages_lw &>/dev/null \ + || ! echo -e "Installing $need_packages_lw requires root privileges." \ + || sudo apt-get install -y $need_packages_lw \ + || FATAL "failed to install $need_packages_lw" install_juju install_docker_ce #install_docker_compose @@ -647,7 +695,7 @@ INSTALL_VIMEMU="" INSTALL_FROM_LXDIMAGES="" LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd" LXD_REPOSITORY_PATH="" -INSTALL_LIGHTWEIGHT="" +INSTALL_LIGHTWEIGHT="y" NOCONFIGURE="" RELEASE_DAILY="" SESSION_ID=`date +%s` @@ -694,6 +742,7 @@ while getopts ":hy-:b:r:k:u:R:l:p:D:" o; do [ "${OPTARG}" == "lxdinstall" ] && INSTALL_LXD="y" && continue [ "${OPTARG}" == "lxdimages" ] && INSTALL_FROM_LXDIMAGES="y" && continue [ "${OPTARG}" == "lightweight" ] && INSTALL_LIGHTWEIGHT="y" && continue + [ "${OPTARG}" == "soui" ] && INSTALL_LIGHTWEIGHT="" && && continue [ "${OPTARG}" == "vimemu" ] && INSTALL_VIMEMU="y" && continue [ "${OPTARG}" == "noconfigure" ] && NOCONFIGURE="y" && continue [ "${OPTARG}" == "showopts" ] && SHOWOPTS="y" && continue @@ -774,6 +823,7 @@ fi OSM_JENKINS="$OSM_DEVOPS/jenkins" . $OSM_JENKINS/common/all_funcs +[ -n "$INSTALL_LIGHTWEIGHT" ] && [ -n "$UNINSTALL" ] && uninstall_lightweight && echo -e "\nDONE" && exit 0 [ -n "$UNINSTALL" ] && uninstall && echo -e "\nDONE" && exit 0 [ -n "$NAT" ] && nat && echo -e "\nDONE" && exit 0 [ -n "$UPDATE" ] && update && echo -e "\nDONE" && exit 0