-function install_docker_ce() {
- # installs and configures Docker CE
- echo "Installing Docker CE ..."
- sudo apt-get -qq update
- sudo apt-get install -y apt-transport-https ca-certificates software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get -qq update
- sudo apt-get install -y docker-ce
- echo "Adding user to group 'docker'"
- sudo groupadd -f docker
- sudo usermod -aG docker $USER
- sleep 2
- sudo service docker restart
- echo "... restarted Docker service"
- sg docker -c "docker version" || FATAL "Docker installation failed"
- echo "... Docker CE installation done"
+function install_osm() {
+ [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
+
+ trap ctrl_c INT
+ track start release $RELEASE none none docker_tag $OSM_DOCKER_TAG none none installation_type $OSM_INSTALLATION_TYPE none none
+
+ track checks checkingroot_ok
+ [ "$USER" == "root" ] && FATAL "You are running the installer as root. The installer is prepared to be executed as a normal user with sudo privileges."
+ track checks noroot_ok
+
+ [ -z "$ASSUME_YES" ] && ! ask_user "The installation will do the following
+ 1. Install and configure LXD
+ 2. Install juju
+ 3. Install docker CE
+ 4. Disable swap space
+ 5. Install and initialize Kubernetes
+ as pre-requirements.
+ Do you want to proceed (Y/n)? " y && echo "Cancelled!" && exit 1
+ track checks proceed_ok
+
+ echo "Installing OSM"
+
+ echo "Determining IP address of the interface with the default route"
+ DEFAULT_IF=$(ip route list|awk '$1=="default" {print $5; exit}')
+ [ -z "$DEFAULT_IF" ] && DEFAULT_IF=$(route -n |awk '$1~/^0.0.0.0/ {print $8; exit}')
+ [ -z "$DEFAULT_IF" ] && FATAL "Not possible to determine the interface with the default route 0.0.0.0"
+ DEFAULT_IP=`ip -o -4 a s ${DEFAULT_IF} |awk '{split($4,a,"/"); print a[1]; exit}'`
+ [ -z "$DEFAULT_IP" ] && FATAL "Not possible to determine the IP address of the interface with the default route"
+
+ # configure apt proxy
+ [ -n "$APT_PROXY_URL" ] && configure_apt_proxy $APT_PROXY_URL
+
+ # if no host is passed in, we need to install lxd/juju, unless explicilty asked not to
+ if [ -z "$OSM_VCA_HOST" ] && [ -z "$INSTALL_NOLXD" ] && [ -z "$LXD_CLOUD_FILE" ]; then
+ LXD_INSTALL_OPTS="-D ${OSM_DEVOPS} -i ${DEFAULT_IP} ${DEBUG_INSTALL}"
+ $OSM_DEVOPS/installers/install_lxd.sh ${LXD_INSTALL_OPTS} || FATAL_TRACK lxd "install_lxd.sh failed"
+ fi
+
+ track prereq prereqok_ok
+
+ if [ ! -n "$INSTALL_NODOCKER" ]; then
+ DOCKER_CE_OPTS="-D ${OSM_DEVOPS} ${DEBUG_INSTALL}"
+ [ -n "${DOCKER_PROXY_URL}" ] && DOCKER_CE_OPTS="${DOCKER_CE_OPTS} -p ${DOCKER_PROXY_URL}"
+ $OSM_DEVOPS/installers/install_docker_ce.sh ${DOCKER_CE_OPTS} || FATAL_TRACK docker_ce "install_docker_ce.sh failed"
+ fi
+
+ track docker_ce docker_ce_ok
+
+ echo "Creating folders for installation"
+ [ ! -d "$OSM_DOCKER_WORK_DIR" ] && sudo mkdir -p $OSM_DOCKER_WORK_DIR
+ [ ! -d "$OSM_DOCKER_WORK_DIR/osm_pla" -a -n "$INSTALL_PLA" ] && sudo mkdir -p $OSM_DOCKER_WORK_DIR/osm_pla
+ sudo cp -b $OSM_DEVOPS/installers/docker/cluster-config.yaml $OSM_DOCKER_WORK_DIR/cluster-config.yaml
+
+ $OSM_DEVOPS/installers/install_kubeadm_cluster.sh -i ${DEFAULT_IP} -d ${OSM_DOCKER_WORK_DIR} -D ${OSM_DEVOPS} ${DEBUG_INSTALL} || \
+ FATAL_TRACK k8scluster "install_kubeadm_cluster.sh failed"
+ track k8scluster k8scluster_ok
+
+ JUJU_OPTS="-D ${OSM_DEVOPS} -s ${OSM_STACK_NAME} -i ${DEFAULT_IP} ${DEBUG_INSTALL} ${INSTALL_NOJUJU} ${INSTALL_CACHELXDIMAGES}"
+ [ -n "${OSM_VCA_HOST}" ] && JUJU_OPTS="$JUJU_OPTS -H ${OSM_VCA_HOST}"
+ [ -n "${LXD_CLOUD_FILE}" ] && JUJU_OPTS="$JUJU_OPTS -l ${LXD_CLOUD_FILE}"
+ [ -n "${LXD_CRED_FILE}" ] && JUJU_OPTS="$JUJU_OPTS -L ${LXD_CRED_FILE}"
+ [ -n "${CONTROLLER_NAME}" ] && JUJU_OPTS="$JUJU_OPTS -K ${CONTROLLER_NAME}"
+ $OSM_DEVOPS/installers/install_juju.sh ${JUJU_OPTS} || FATAL_TRACK juju "install_juju.sh failed"
+ set_vca_variables
+ track juju juju_ok
+
+ if [ -z "$OSM_DATABASE_COMMONKEY" ]; then
+ OSM_DATABASE_COMMONKEY=$(generate_secret)
+ [ -z "OSM_DATABASE_COMMONKEY" ] && FATAL "Cannot generate common db secret"
+ fi
+
+ # Deploy OSM services
+ [ -z "$DOCKER_NOBUILD" ] && generate_docker_images
+ track docker_images docker_images_ok
+
+ generate_k8s_manifest_files
+ track osm_files manifest_files_ok
+ generate_docker_env_files
+ track osm_files env_files_ok
+
+ deploy_charmed_services
+ track deploy_osm deploy_charmed_services_ok
+ kube_secrets
+ track deploy_osm kube_secrets_ok
+ update_manifest_files
+ track deploy_osm update_manifest_files_ok
+ namespace_vol
+ track deploy_osm namespace_vol_ok
+ deploy_osm_services
+ track deploy_osm deploy_osm_services_k8s_ok
+ if [ -n "$INSTALL_PLA"]; then
+ # optional PLA install
+ deploy_osm_pla_service
+ track deploy_osm deploy_osm_pla_ok
+ fi
+ if [ -n "$INSTALL_K8S_MONITOR" ]; then
+ # install OSM MONITORING
+ install_k8s_monitoring
+ track deploy_osm install_k8s_monitoring_ok
+ fi
+
+ [ -z "$INSTALL_NOHOSTCLIENT" ] && install_osmclient
+ track osmclient osmclient_ok
+
+ echo -e "Checking OSM health state..."
+ $OSM_DEVOPS/installers/osm_health.sh -s ${OSM_STACK_NAME} -k || \
+ (echo -e "OSM is not healthy, but will probably converge to a healthy state soon." && \
+ echo -e "Check OSM status with: kubectl -n ${OSM_STACK_NAME} get all" && \
+ track healthchecks osm_unhealthy didnotconverge)
+ track healthchecks after_healthcheck_ok
+
+ add_local_k8scluster
+ track final_ops add_local_k8scluster_ok
+
+ wget -q -O- https://osm-download.etsi.org/ftp/osm-12.0-twelve/README2.txt &> /dev/null
+ track end
+ sudo find /etc/osm
+ [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function