X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Ffull_install_osm.sh;h=3b57a975d82ba423e9af5d3633bf71d76c962807;hb=89c5f55fc5fe30e9f38ef079ebf27ac996183d61;hp=50b2c0311b81c26d5bb3c305b7528e4dbd5afed6;hpb=7b53d2629d0c181e026e4eaa1b271b12f36c85f5;p=osm%2Fdevops.git diff --git a/installers/full_install_osm.sh b/installers/full_install_osm.sh index 50b2c031..3b57a975 100755 --- a/installers/full_install_osm.sh +++ b/installers/full_install_osm.sh @@ -38,7 +38,7 @@ function usage(){ echo -e " --pla: install the PLA module for placement support" echo -e " --ng-sa: install Airflow and Pushgateway to get VNF and NS status (experimental)" echo -e " -m : install OSM but only rebuild or pull the specified docker images (NG-UI, NBI, LCM, RO, MON, POL, PLA, KAFKA, MONGO, PROMETHEUS, PROMETHEUS-CADVISOR, KEYSTONE-DB, NONE)" - echo -e " -o : ONLY (un)installs one of the addons (k8s_monitor)" + echo -e " -o : ONLY (un)installs one of the addons (k8s_monitor, ng-sa)" echo -e " -O : Install OSM to an OpenStack infrastructure. is required. If a is used, the clouds.yaml file should be under ~/.config/openstack/ or /etc/openstack/" echo -e " -N : Public network name required to setup OSM to OpenStack" echo -e " -f : Public SSH key to use to deploy OSM to OpenStack" @@ -386,6 +386,23 @@ function generate_docker_env_files() { else sudo sed -i "s|OSMLCM_VCA_K8S_CLOUD.*|OSMLCM_VCA_K8S_CLOUD=${OSM_VCA_K8S_CLOUDNAME}|g" $OSM_DOCKER_WORK_DIR/lcm.env fi + if [ -n "${OSM_BEHIND_PROXY}" ]; then + if ! grep -Fq "HTTP_PROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then + echo "HTTP_PROXY=${HTTP_PROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env + else + sudo sed -i "s|HTTP_PROXY.*|HTTP_PROXY=${HTTP_PROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env + fi + if ! grep -Fq "HTTPS_PROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then + echo "HTTPS_PROXY=${HTTPS_PROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env + else + sudo sed -i "s|HTTPS_PROXY.*|HTTPS_PROXY=${HTTPS_PROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env + fi + if ! grep -Fq "NO_PROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then + echo "NO_PROXY=${NO_PROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env + else + sudo sed -i "s|NO_PROXY.*|NO_PROXY=${NO_PROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env + fi + fi # RO MYSQL_ROOT_PASSWORD=$(generate_secret) @@ -540,7 +557,7 @@ function update_manifest_files() { list_of_services="$list_of_services $module" fi done - if [ ! "$OSM_DOCKER_TAG" == "12" ]; then + if [ ! "$OSM_DOCKER_TAG" == "13" ]; then parse_yaml $OSM_DOCKER_TAG $list_of_services fi if [ -n "$MODULE_DOCKER_TAG" ]; then @@ -603,16 +620,9 @@ EOF" [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function } -function install_osm() { +function ask_proceed() { [ -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 @@ -621,6 +631,94 @@ function install_osm() { 5. Install and initialize Kubernetes as pre-requirements. Do you want to proceed (Y/n)? " y && echo "Cancelled!" && exit 1 + + [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function +} + +function check_osm_behind_proxy() { + [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function + + export OSM_BEHIND_PROXY="" + export OSM_PROXY_ENV_VARIABLES="" + [ -n "${http_proxy}" ] && OSM_BEHIND_PROXY="y" && echo "http_proxy=${http_proxy}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} http_proxy" + [ -n "${https_proxy}" ] && OSM_BEHIND_PROXY="y" && echo "https_proxy=${https_proxy}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} https_proxy" + [ -n "${HTTP_PROXY}" ] && OSM_BEHIND_PROXY="y" && echo "HTTP_PROXY=${HTTP_PROXY}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} HTTP_PROXY" + [ -n "${HTTPS_PROXY}" ] && OSM_BEHIND_PROXY="y" && echo "https_proxy=${HTTPS_PROXY}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} HTTPS_PROXY" + [ -n "${no_proxy}" ] && echo "no_proxy=${no_proxy}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} no_proxy" + [ -n "${NO_PROXY}" ] && echo "NO_PROXY=${NO_PROXY}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} NO_PROXY" + + echo "OSM_BEHIND_PROXY=${OSM_BEHIND_PROXY}" + echo "OSM_PROXY_ENV_VARIABLES=${OSM_PROXY_ENV_VARIABLES}" + + if [ -n "${OSM_BEHIND_PROXY}" ]; then + [ -z "$ASSUME_YES" ] && ! ask_user " +The following env variables have been found for the current user: +${OSM_PROXY_ENV_VARIABLES}. + +This suggests that this machine is behind a proxy and a special configuration is required. +The installer will install Docker CE, LXD and Juju to work behind a proxy using those +env variables. + +Take into account that the installer uses apt, curl, wget, docker, lxd, juju and snap. +Depending on the program, the env variables to work behind a proxy might be different +(e.g. http_proxy vs HTTP_PROXY). + +For that reason, it is strongly recommended that at least http_proxy, https_proxy, HTTP_PROXY +and HTTPS_PROXY are defined. + +Finally, some of the programs (apt, snap) those programs are run as sudoer, requiring that +those env variables are also set for root user. If you are not sure whether those variables +are configured for the root user, you can stop the installation now. + +Do you want to proceed with the installation (Y/n)? " y && echo "Cancelled!" && exit 1 + else + echo "This machine is not behind a proxy" + fi + + [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function +} + +function find_devops_folder() { + if [ -z "$OSM_DEVOPS" ]; then + if [ -n "$TEST_INSTALLER" ]; then + echo -e "\nUsing local devops repo for OSM installation" + OSM_DEVOPS="$(dirname $(realpath $(dirname $0)))" + else + echo -e "\nCreating temporary dir for OSM installation" + OSM_DEVOPS="$(mktemp -d -q --tmpdir "installosm.XXXXXX")" + trap 'rm -rf "$OSM_DEVOPS"' EXIT + git clone https://osm.etsi.org/gerrit/osm/devops.git $OSM_DEVOPS + fi + fi +} + +function install_osm() { + [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function + + trap ctrl_c INT + + # TODO: move this under start + [ -n "$DOCKER_REGISTRY_URL" ] && parse_docker_registry_url + + check_osm_behind_proxy + track checks proxy_ok + + check_packages "git wget curl tar snapd" + + sudo snap install jq || FATAL "Could not install jq (snap package). Make sure that snap works" + + find_devops_folder + + # TODO: the use of stacks come from docker-compose. We should probably remove + [ "${OSM_STACK_NAME}" == "osm" ] || OSM_DOCKER_WORK_DIR="$OSM_WORK_DIR/stack/$OSM_STACK_NAME" + + 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 + + ask_proceed track checks proceed_ok echo "Installing OSM" @@ -638,6 +736,7 @@ function install_osm() { # 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}" + [ -n "${OSM_BEHIND_PROXY}" ] && LXD_INSTALL_OPTS="${LXD_INSTALL_OPTS} -P" $OSM_DEVOPS/installers/install_lxd.sh ${LXD_INSTALL_OPTS} || FATAL_TRACK lxd "install_lxd.sh failed" fi @@ -646,6 +745,7 @@ function install_osm() { 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}" + [ -n "${OSM_BEHIND_PROXY}" ] && DOCKER_CE_OPTS="${DOCKER_CE_OPTS} -P" $OSM_DEVOPS/installers/install_docker_ce.sh ${DOCKER_CE_OPTS} || FATAL_TRACK docker_ce "install_docker_ce.sh failed" fi @@ -665,6 +765,7 @@ function install_osm() { [ -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}" + [ -n "${OSM_BEHIND_PROXY}" ] && JUJU_OPTS="${JUJU_OPTS} -P" $OSM_DEVOPS/installers/install_juju.sh ${JUJU_OPTS} || FATAL_TRACK juju "install_juju.sh failed" set_vca_variables track juju juju_ok @@ -722,7 +823,7 @@ function install_osm() { 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 + wget -q -O- https://osm-download.etsi.org/ftp/osm-13.0-thirteen/README2.txt &> /dev/null track end sudo find /etc/osm [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function @@ -874,9 +975,10 @@ INSTALL_FROM_SOURCE="" DEBUG_INSTALL="" RELEASE="ReleaseTEN" REPOSITORY="stable" -INSTALL_VIMEMU="" -INSTALL_PLA="" +INSTALL_K8S_MONITOR="" INSTALL_NGSA="" +INSTALL_PLA="" +INSTALL_VIMEMU="" LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd" LXD_REPOSITORY_PATH="" INSTALL_LIGHTWEIGHT="y" @@ -893,7 +995,6 @@ TO_REBUILD="" INSTALL_NOLXD="" INSTALL_NODOCKER="" INSTALL_NOJUJU="" -INSTALL_K8S_MONITOR="" INSTALL_NOHOSTCLIENT="" INSTALL_CACHELXDIMAGES="" OSM_DEVOPS= @@ -965,6 +1066,7 @@ while getopts ":a:b:r:n:k:u:R:D:o:O:m:N:H:S:s:t:U:P:A:l:L:K:d:p:T:f:F:-: hy" o; o) INSTALL_ONLY="y" [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue + [ "${OPTARG}" == "ng-sa" ] && INSTALL_NGSA="y" && continue ;; O) INSTALL_TO_OPENSTACK="y" @@ -1125,7 +1227,7 @@ if [ -n "$CHARMED" ]; then track start release $RELEASE none none docker_tag $OSM_DOCKER_TAG none none installation_type $OSM_INSTALLATION_TYPE none none ${OSM_DEVOPS}/installers/charmed_install.sh --tag $OSM_DOCKER_TAG "$@" || \ FATAL_TRACK charmed_install "charmed_install.sh failed" - wget -q -O- https://osm-download.etsi.org/ftp/osm-12.0-twelve/README2.txt &> /dev/null + wget -q -O- https://osm-download.etsi.org/ftp/osm-13.0-thirteen/README2.txt &> /dev/null track end installation_type $OSM_INSTALLATION_TYPE echo -e "\nDONE" exit 0 @@ -1139,48 +1241,18 @@ if [ -n "$INSTALL_TO_OPENSTACK" ]; then fi # Community_installer -[ -n "$DOCKER_REGISTRY_URL" ] && parse_docker_registry_url + [ -n "$TO_REBUILD" ] && [ "$TO_REBUILD" != " NONE" ] && echo $TO_REBUILD | grep -q NONE && FATAL "Incompatible option: -m NONE cannot be used with other -m options" [ -n "$TO_REBUILD" ] && [ "$TO_REBUILD" == " PLA" ] && [ -z "$INSTALL_PLA" ] && FATAL "Incompatible option: -m PLA cannot be used without --pla option" - # if develop, we force master [ -z "$COMMIT_ID" ] && [ -n "$DEVELOP" ] && COMMIT_ID="master" - -check_packages "git wget curl tar snapd" - -sudo snap install jq -if [ -z "$OSM_DEVOPS" ]; then - if [ -n "$TEST_INSTALLER" ]; then - echo -e "\nUsing local devops repo for OSM installation" - OSM_DEVOPS="$(dirname $(realpath $(dirname $0)))" - else - echo -e "\nCreating temporary dir for OSM installation" - OSM_DEVOPS="$(mktemp -d -q --tmpdir "installosm.XXXXXX")" - trap 'rm -rf "$OSM_DEVOPS"' EXIT - - git clone https://osm.etsi.org/gerrit/osm/devops.git $OSM_DEVOPS - - if [ -z "$COMMIT_ID" ]; then - echo -e "\nGuessing the current stable release" - LATEST_STABLE_DEVOPS=`git -C $OSM_DEVOPS tag -l v[0-9].* | sort -V | tail -n1` - [ -z "$LATEST_STABLE_DEVOPS" ] && echo "Could not find the current latest stable release" && exit 0 - - echo "Latest tag in devops repo: $LATEST_STABLE_DEVOPS" - COMMIT_ID="tags/$LATEST_STABLE_DEVOPS" - else - echo -e "\nDEVOPS Using commit $COMMIT_ID" - fi - git -C $OSM_DEVOPS checkout $COMMIT_ID - fi -fi - -[ "${OSM_STACK_NAME}" == "osm" ] || OSM_DOCKER_WORK_DIR="$OSM_WORK_DIR/stack/$OSM_STACK_NAME" OSM_K8S_WORK_DIR="$OSM_DOCKER_WORK_DIR/osm_pods" && OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_STACK_NAME}" [ -n "$INSTALL_ONLY" ] && [ -n "$INSTALL_K8S_MONITOR" ] && install_k8s_monitoring +[ -n "$INSTALL_ONLY" ] && [ -n "$INSTALL_NGSA" ] && install_osm_ngsa_service [ -n "$INSTALL_ONLY" ] && echo -e "\nDONE" && exit 0 #Installation starts here -wget -q -O- https://osm-download.etsi.org/ftp/osm-12.0-twelve/README.txt &> /dev/null +wget -q -O- https://osm-download.etsi.org/ftp/osm-13.0-thirteen/README.txt &> /dev/null export OSM_TRACK_INSTALLATION_ID="$(date +%s)-$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)" install_osm echo -e "\nDONE"