install_osm: defaults to lightweight
[osm/devops.git] / installers / install_osm.sh
index 9836bf2..2cd7b59 100755 (executable)
@@ -31,7 +31,8 @@ function usage(){
     echo -e "     --lxdimages:    download lxd images from OSM repository instead of creating them from scratch"
     echo -e "     -l <lxd_repo>:  use specified repository url for lxd images"
     echo -e "     -p <path>:      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"
@@ -491,11 +522,19 @@ function install_docker_ce() {
     echo "... restarted Docker service"
 }
 
+function install_docker_compose() {
+    # installs and configures docker-compose
+    echo "Installing Docker Compose ..."
+    sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
+    sudo chmod +x /usr/local/bin/docker-compose
+    echo "... Docker Compose installation done"
+}
+
 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"
 }
 
@@ -505,7 +544,7 @@ function generate_docker_images() {
     docker pull wurstmeister/kafka
     docker pull wurstmeister/zookeeper
     docker pull mongo
-    docker pull mysql
+    docker pull mysql:5
     git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/MON
     docker build ${LWTEMPDIR}/MON -f ${LWTEMPDIR}/MON/docker/Dockerfile -t osm/mon || ! echo "cannot build MON docker image" >&2
     docker build ${LWTEMPDIR}/MON/policy_module -f ${LWTEMPDIR}/MON/policy_module/Dockerfile -t osm/pm || ! echo "cannot build PM docker image" >&2
@@ -516,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"
 }
@@ -523,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
@@ -539,6 +580,7 @@ function deploy_lightweight() {
     docker swarm init --advertise-addr ${DEFAULT_IP}
     docker network create --driver=overlay --attachable --opt com.docker.network.driver.mtu=${DEFAULT_MTU} netOSM
     docker stack deploy -c ${OSM_DEVOPS}/installers/docker/docker-compose.yaml osm
+    #docker-compose -f /usr/share/osm-devops/installers/docker/docker-compose.yaml up -d
 EONG
     echo "Finished deployment of lightweight build"
 }
@@ -550,8 +592,19 @@ 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
     generate_docker_images
     generate_docker_env_files
     deploy_lightweight
@@ -637,7 +690,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`
@@ -684,6 +737,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
@@ -764,6 +818,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