X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Finstall_juju.sh;h=7be5f99cbaa4a231bbe9fbaf8564cb8392b81503;hb=8375da1695c98bd23fcc226f0e26c20ac5710d1b;hp=c9f0efeab0ff19012e7b411b1b299f13ad6e6097;hpb=190380573f6ba799d51a0e6b6a58ecf35c963228;p=osm%2Fdevops.git diff --git a/installers/install_juju.sh b/installers/install_juju.sh index c9f0efea..7be5f99c 100755 --- a/installers/install_juju.sh +++ b/installers/install_juju.sh @@ -29,7 +29,6 @@ function usage(){ echo -e " -K: Specifies the name of the controller to use - The controller must be already bootstrapped" echo -e " --debug: debug mode" echo -e " --cachelxdimages: cache local lxd images, create cronjob for that cache (will make installation longer)" - echo -e " --nojuju: do not juju, assumes already installed" [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function } @@ -40,13 +39,13 @@ function update_juju_images(){ [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function } -function install_juju() { +function install_juju_client() { [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function - echo "Installing juju" + echo "Installing juju client" sudo snap install juju --classic --channel=$JUJU_VERSION/stable [[ ":$PATH": != *":/snap/bin:"* ]] && PATH="/snap/bin:${PATH}" [ -n "$INSTALL_CACHELXDIMAGES" ] && update_juju_images - echo "Finished installation of juju" + echo "Finished installation of juju client" [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function return 0 } @@ -54,11 +53,30 @@ function install_juju() { function juju_createcontroller_k8s(){ [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function cat $HOME/.kube/config | juju add-k8s $OSM_VCA_K8S_CLOUDNAME --client \ - || FATAL "Failed to add K8s endpoint and credential for client in cloud $OSM_VCA_K8S_CLOUDNAME" - juju bootstrap -v --debug $OSM_VCA_K8S_CLOUDNAME $OSM_STACK_NAME \ + || FATAL_TRACK juju "Failed to add K8s endpoint and credential for client in cloud $OSM_VCA_K8S_CLOUDNAME" + + JUJU_BOOTSTRAP_OPTS="" + if [ -n "${OSM_BEHIND_PROXY}" ] ; then + K8S_SVC_CLUSTER_IP=$(kubectl get svc/kubernetes -o jsonpath='{.spec.clusterIP}') + NO_PROXY="${NO_PROXY},${K8S_SVC_CLUSTER_IP},.svc,.cluster.local" + mkdir -p /tmp/.osm + JUJU_MODEL_CONFIG_FILE=/tmp/.osm/model-config.yaml + cat << EOF > $JUJU_MODEL_CONFIG_FILE +apt-http-proxy: ${HTTP_PROXY} +apt-https-proxy: ${HTTPS_PROXY} +juju-http-proxy: ${HTTP_PROXY} +juju-https-proxy: ${HTTPS_PROXY} +juju-no-proxy: ${NO_PROXY} +snap-http-proxy: ${HTTP_PROXY} +snap-https-proxy: ${HTTPS_PROXY} +EOF + JUJU_BOOTSTRAP_OPTS="--model-default /tmp/.osm/model-config.yaml" + fi + juju bootstrap -v --debug $OSM_VCA_K8S_CLOUDNAME $OSM_NAMESPACE \ --config controller-service-type=loadbalancer \ --agent-version=$JUJU_AGENT_VERSION \ - || FATAL "Failed to bootstrap controller $OSM_STACK_NAME in cloud $OSM_VCA_K8S_CLOUDNAME" + ${JUJU_BOOTSTRAP_OPTS} \ + || FATAL_TRACK juju "Failed to bootstrap controller $OSM_NAMESPACE in cloud $OSM_VCA_K8S_CLOUDNAME" [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function } @@ -90,10 +108,23 @@ credentials: client-key: /tmp/.osm/client.key EOF lxc config trust add local: /tmp/.osm/client.crt - juju add-cloud -c $OSM_STACK_NAME $OSM_VCA_CLOUDNAME $LXD_CLOUD --force - juju add-credential -c $OSM_STACK_NAME $OSM_VCA_CLOUDNAME -f $LXD_CREDENTIALS + juju add-cloud -c $OSM_NAMESPACE $OSM_VCA_CLOUDNAME $LXD_CLOUD --force + juju add-credential -c $OSM_NAMESPACE $OSM_VCA_CLOUDNAME -f $LXD_CREDENTIALS sg lxd -c "lxd waitready" juju controller-config features=[k8s-operators] + if [ -n "${OSM_BEHIND_PROXY}" ] ; then + if [ -n "${HTTP_PROXY}" ]; then + juju model-default lxd-cloud apt-http-proxy="$HTTP_PROXY" + juju model-default lxd-cloud juju-http-proxy="$HTTP_PROXY" + juju model-default lxd-cloud snap-http-proxy="$HTTP_PROXY" + fi + if [ -n "${HTTPS_PROXY}" ]; then + juju model-default lxd-cloud apt-https-proxy="$HTTPS_PROXY" + juju model-default lxd-cloud juju-https-proxy="$HTTPS_PROXY" + juju model-default lxd-cloud snap-https-proxy="$HTTPS_PROXY" + fi + [ -n "${NO_PROXY}" ] && juju model-default lxd-cloud juju-no-proxy="$NO_PROXY" + fi [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function } @@ -124,16 +155,17 @@ function juju_createproxy() { DEBUG_INSTALL="" INSTALL_CACHELXDIMAGES="" INSTALL_NOJUJU="" -JUJU_AGENT_VERSION=2.9.34 +JUJU_AGENT_VERSION=2.9.43 JUJU_VERSION=2.9 +OSM_BEHIND_PROXY="" OSM_DEVOPS= -OSM_STACK_NAME=osm +OSM_NAMESPACE=osm OSM_VCA_HOST= OSM_VCA_CLOUDNAME="localhost" OSM_VCA_K8S_CLOUDNAME="k8scloud" RE_CHECK='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$' -while getopts ":D:i:s:H:l:L:K:-: h" o; do +while getopts ":D:i:s:H:l:L:K:-: hP" o; do case "${o}" in D) OSM_DEVOPS="${OPTARG}" @@ -142,7 +174,7 @@ while getopts ":D:i:s:H:l:L:K:-: h" o; do DEFAULT_IP="${OPTARG}" ;; s) - OSM_STACK_NAME="${OPTARG}" && [[ ! "${OPTARG}" =~ $RE_CHECK ]] && echo "Namespace $OPTARG is invalid. Regex used for validation is $RE_CHECK" && exit 0 + OSM_NAMESPACE="${OPTARG}" && [[ ! "${OPTARG}" =~ $RE_CHECK ]] && echo "Namespace $OPTARG is invalid. Regex used for validation is $RE_CHECK" && exit 0 ;; H) OSM_VCA_HOST="${OPTARG}" @@ -156,10 +188,12 @@ while getopts ":D:i:s:H:l:L:K:-: h" o; do K) CONTROLLER_NAME="${OPTARG}" ;; + P) + OSM_BEHIND_PROXY="y" + ;; -) [ "${OPTARG}" == "help" ] && usage && exit 0 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="--debug" && continue - [ "${OPTARG}" == "nojuju" ] && INSTALL_NOJUJU="y" && continue [ "${OPTARG}" == "cachelxdimages" ] && INSTALL_CACHELXDIMAGES="y" && continue echo -e "Invalid option: '--$OPTARG'\n" >&2 usage && exit 1 @@ -186,18 +220,19 @@ source $OSM_DEVOPS/common/track echo "DEBUG_INSTALL=$DEBUG_INSTALL" echo "DEFAULT_IP=$DEFAULT_IP" +echo "OSM_BEHIND_PROXY=$OSM_BEHIND_PROXY" echo "OSM_DEVOPS=$OSM_DEVOPS" echo "HOME=$HOME" -[ -z "$INSTALL_NOJUJU" ] && install_juju -track juju juju_install_ok +[ -z "$INSTALL_NOJUJU" ] && install_juju_client +track juju juju_client_ok if [ -z "$OSM_VCA_HOST" ]; then if [ -z "$CONTROLLER_NAME" ]; then juju_createcontroller_k8s juju_addlxd_cloud if [ -n "$LXD_CLOUD_FILE" ]; then - [ -z "$LXD_CRED_FILE" ] && FATAL "The installer needs the LXD credential yaml if the LXD is external" + [ -z "$LXD_CRED_FILE" ] && FATAL_TRACK juju "The installer needs the LXD credential yaml if the LXD is external" OSM_VCA_CLOUDNAME="lxd-cloud" juju add-cloud $OSM_VCA_CLOUDNAME $LXD_CLOUD_FILE --force || juju update-cloud $OSM_VCA_CLOUDNAME --client -f $LXD_CLOUD_FILE juju add-credential $OSM_VCA_CLOUDNAME -f $LXD_CRED_FILE || juju update-credential $OSM_VCA_CLOUDNAME lxd-cloud-creds -f $LXD_CRED_FILE @@ -206,7 +241,7 @@ if [ -z "$OSM_VCA_HOST" ]; then else OSM_VCA_CLOUDNAME="lxd-cloud" if [ -n "$LXD_CLOUD_FILE" ]; then - [ -z "$LXD_CRED_FILE" ] && FATAL "The installer needs the LXD credential yaml if the LXD is external" + [ -z "$LXD_CRED_FILE" ] && FATAL_TRACK juju "The installer needs the LXD credential yaml if the LXD is external" juju add-cloud -c $CONTROLLER_NAME $OSM_VCA_CLOUDNAME $LXD_CLOUD_FILE --force || juju update-cloud lxd-cloud -c $CONTROLLER_NAME -f $LXD_CLOUD_FILE juju add-credential -c $CONTROLLER_NAME $OSM_VCA_CLOUDNAME -f $LXD_CRED_FILE || juju update-credential lxd-cloud -c $CONTROLLER_NAME -f $LXD_CRED_FILE else @@ -241,10 +276,8 @@ EOF juju add-credential -c $CONTROLLER_NAME $OSM_VCA_CLOUDNAME -f ~/.osm/lxd-credentials.yaml || juju update-credential lxd-cloud -c $CONTROLLER_NAME -f ~/.osm/lxd-credentials.yaml fi fi - [ -z "$CONTROLLER_NAME" ] && OSM_VCA_HOST=`sg lxd -c "juju show-controller $OSM_STACK_NAME"|grep api-endpoints|awk -F\' '{print $2}'|awk -F\: '{print $1}'` + [ -z "$CONTROLLER_NAME" ] && OSM_VCA_HOST=`sg lxd -c "juju show-controller $OSM_NAMESPACE"|grep api-endpoints|awk -F\' '{print $2}'|awk -F\: '{print $1}'` [ -n "$CONTROLLER_NAME" ] && OSM_VCA_HOST=`juju show-controller $CONTROLLER_NAME |grep api-endpoints|awk -F\' '{print $2}'|awk -F\: '{print $1}'` - [ -z "$OSM_VCA_HOST" ] && FATAL "Cannot obtain juju controller IP address" + [ -z "$OSM_VCA_HOST" ] && FATAL_TRACK juju "Cannot obtain juju controller IP address" fi track juju juju_controller_ok - -