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"
lxd waitready
lxc network create lxdbr0 ipv4.address=auto ipv4.nat=true ipv6.address=none ipv6.nat=false
DEFAULT_INTERFACE=$(route -n | awk '$1~/^0.0.0.0/ {print $8}')
- DEFAULT_MTU=$( ip addr show $DEFAULT_INTERFACE | perl -ne 'if (/mtu\s(\d+)/) {print $1;}')
+ DEFAULT_MTU=$(ip addr show $DEFAULT_INTERFACE | perl -ne 'if (/mtu\s(\d+)/) {print $1;}')
lxc profile device set default eth0 mtu $DEFAULT_MTU
#sudo systemctl stop lxd-bridge
#sudo systemctl --system daemon-reload
function install_osmclient(){
CLIENT_RELEASE=${RELEASE#"-R "}
CLIENT_REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
- CLIENT_REPOSITORY="stable"
+ CLIENT_REPOSITORY=${REPOSITORY#"-r "}
[ -z "$REPOSITORY_BASE" ] && REPOSITORY_BASE="-u https://osm-download.etsi.org/repository/osm/debian"
CLIENT_REPOSITORY_BASE=${REPOSITORY_BASE#"-u "}
key_location=$CLIENT_REPOSITORY_BASE/$CLIENT_RELEASE/$CLIENT_REPOSITORY_KEY
curl $key_location | sudo apt-key add -
sudo add-apt-repository -y "deb [arch=amd64] $CLIENT_REPOSITORY_BASE/$CLIENT_RELEASE $CLIENT_REPOSITORY osmclient"
sudo apt-get update
+ sudo apt-get install -y python-pip
+ sudo -H pip install pip==9.0.3
+ sudo -H pip install python-magic
sudo apt-get install -y python-osmclient
#sed 's,OSM_SOL005=[^$]*,OSM_SOL005=True,' -i ${HOME}/.bashrc
#echo 'export OSM_HOSTNAME=localhost' >> ${HOME}/.bashrc
#echo 'export OSM_SOL005=True' >> ${HOME}/.bashrc
+ [ -z "$INSTALL_LIGHTWEIGHT" ] && export OSM_HOSTNAME=`lxc list | awk '($2=="SO-ub"){print $6}'`
+ [ -z "$INSTALL_LIGHTWEIGHT" ] && export OSM_RO_HOSTNAME=`lxc list | awk '($2=="RO"){print $6}'`
+ [ -n "$INSTALL_LIGHTWEIGHT" ] && export OSM_HOSTNAME=localhost
echo -e "\nOSM client installed"
echo -e "You might be interested in adding the following OSM client env variables to your .bashrc file:"
echo " export OSM_HOSTNAME=${OSM_HOSTNAME}"
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
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
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}" > ${OSM_DEVOPS}/installers/docker/lcm.env
- echo "OSMLCM_VCA_SECRET=${OSMLCM_VCA_SECRET}" >> ${OSM_DEVOPS}/installers/docker/lcm.env
- echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" > ${OSM_DEVOPS}/installers/docker/ro-db.env
- echo "RO_DB_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" > ${OSM_DEVOPS}/installers/docker/ro.env
- echo "OS_NOTIFIER_URI=http://${DEFAULT_IP}:8662" > ${OSM_DEVOPS}/installers/docker/mon.env
+ 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
+ echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |sudo tee ${OSM_DEVOPS}/installers/docker/ro-db.env
+ echo "RO_DB_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |sudo tee ${OSM_DEVOPS}/installers/docker/ro.env
+ echo "OS_NOTIFIER_URI=http://${DEFAULT_IP}:8662" |sudo tee ${OSM_DEVOPS}/installers/docker/mon.env
echo "Finished generation of docker env files"
}
echo "Deploying lightweight build"
newgrp docker << EONG
docker swarm init --advertise-addr ${DEFAULT_IP}
- docker network create --driver=overlay --attachable netOSM
+ 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"
}
-function install_osmclient_sol005() {
- sudo apt-get update
- sudo apt-get install -y python-pip libcurl4-gnutls-dev libgnutls-dev
- git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/osmclient
- sudo -H pip install -U pip
- sudo -H pip install -U setuptools
- pushd ${LWTEMPDIR}/osmclient
- sudo -H python setup.py install
- popd
- #sed 's,OSM_SOL005=[^$]*,OSM_SOL005=True,' -i ~/.bashrc
- echo 'export OSM_HOSTNAME=localhost' >> ${HOME}/.bashrc
- echo 'export OSM_SOL005=True' >> ${HOME}/.bashrc
-}
-
function install_lightweight() {
echo "Installing lightweight build of OSM"
LWTEMPDIR="$(mktemp -d -q --tmpdir "installosmlight.XXXXXX")"
trap 'rm -rf "${LWTEMPDIR}"' EXIT
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
ASSUME_YES=""
INSTALL_FROM_SOURCE=""
RELEASE="-R ReleaseTHREE"
+REPOSITORY="-r stable"
INSTALL_VIMEMU=""
INSTALL_FROM_LXDIMAGES=""
LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd"
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