X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharmed_install.sh;h=04a567847481080f88ce8a3025da8cdd80dc40b9;hb=refs%2Fchanges%2F50%2F11150%2F2;hp=234832864ba3acdb5ec6778395c94556b4236380;hpb=9a59e3d61142459815b1366095802e1b67eb6712;p=osm%2Fdevops.git diff --git a/installers/charmed_install.sh b/installers/charmed_install.sh index 23483286..04a56784 100755 --- a/installers/charmed_install.sh +++ b/installers/charmed_install.sh @@ -15,24 +15,32 @@ # set -eux -JUJU_AGENT_VERSION=2.8.6 +JUJU_VERSION=2.9 +JUJU_AGENT_VERSION=2.9.12 K8S_CLOUD_NAME="k8s-cloud" KUBECTL="microk8s.kubectl" -MICROK8S_VERSION=1.19 -OSMCLIENT_VERSION=9.0 +MICROK8S_VERSION=1.20 +OSMCLIENT_VERSION=10.0 IMAGES_OVERLAY_FILE=~/.osm/images-overlay.yaml PATH=/snap/bin:${PATH} MODEL_NAME=osm -OSM_BUNDLE=cs:osm-54 -OSM_HA_BUNDLE=cs:osm-ha-40 -TAG=9 +# Latest bundles using old mongodb-k8s +# OSM_BUNDLE=cs:osm-68 +# OSM_HA_BUNDLE=cs:osm-ha-54 +# The charm store does not support referencing charms from CharmHub, +# therefore we will point to the local bundles until we migrate all +# charms to CharmHub. +OSM_BUNDLE=/usr/share/osm-devops/installers/charm/bundles/osm/bundle.yaml +OSM_HA_BUNDLE=/usr/share/osm-devops/installers/charm/bundles/osm-ha/bundle.yaml +TAG=testing-daily function check_arguments(){ while [ $# -gt 0 ] ; do case $1 in --bundle) BUNDLE="$2" ;; + --overlay) OVERLAY="$2" ;; --k8s) KUBECFG="$2" ;; --vca) CONTROLLER="$2" ;; --lxd) LXD_CLOUD="$2" ;; @@ -41,6 +49,7 @@ function check_arguments(){ --ha) BUNDLE=$OSM_HA_BUNDLE ;; --tag) TAG="$2" ;; --registry) REGISTRY_INFO="$2" ;; + --only-vca) ONLY_VCA=y ;; esac shift done @@ -69,7 +78,7 @@ function install_snaps(){ export KUBECONFIG=${KUBECFG} KUBEGRP=$(id -g -n) fi - sudo snap install juju --classic --channel=2.8/stable + sudo snap install juju --classic --channel=$JUJU_VERSION/stable } function bootstrap_k8s_lxd(){ @@ -235,7 +244,6 @@ function deploy_charmed_osm(){ esac fi - create_overlay echo "Creating OSM model" if [ -v KUBECFG ]; then juju add-model $MODEL_NAME $K8S_CLOUD_NAME @@ -249,15 +257,16 @@ function deploy_charmed_osm(){ fi [ -v TAG ] && generate_images_overlay && images_overlay="--overlay $IMAGES_OVERLAY_FILE" + if [ -v OVERLAY ]; then + extra_overlay="--overlay $OVERLAY" + fi + if [ -v BUNDLE ]; then - juju deploy -m $MODEL_NAME $BUNDLE --overlay ~/.osm/vca-overlay.yaml $images_overlay + juju deploy -m $MODEL_NAME $BUNDLE --overlay ~/.osm/vca-overlay.yaml $images_overlay $extra_overlay else - juju deploy -m $MODEL_NAME $OSM_BUNDLE --overlay ~/.osm/vca-overlay.yaml $images_overlay + juju deploy -m $MODEL_NAME $OSM_BUNDLE --overlay ~/.osm/vca-overlay.yaml $images_overlay $extra_overlay fi - echo "Waiting for deployment to finish..." - check_osm_deployed - echo "OSM with charms deployed" if [ ! -v KUBECFG ]; then API_SERVER=${DEFAULT_IP} else @@ -268,24 +277,15 @@ function deploy_charmed_osm(){ hostport="$(echo ${url/$user@/} | cut -d/ -f1)" API_SERVER="$(echo $hostport | sed -e 's,:.*,,g')" fi - # Expose OSM services - # Expose NBI - juju config -m $MODEL_NAME nbi site_url=https://nbi.${API_SERVER}.xip.io - juju config -m $MODEL_NAME ng-ui site_url=https://ui.${API_SERVER}.xip.io - - # Expose Grafana - juju config -m $MODEL_NAME grafana-k8s juju-external-hostname=grafana.${API_SERVER}.xip.io - juju expose -m $MODEL_NAME grafana-k8s - wait_for_port grafana-k8s 0 - - # Expose Prometheus - juju config -m $MODEL_NAME prometheus-k8s juju-external-hostname=prometheus.${API_SERVER}.xip.io - juju expose -m $MODEL_NAME prometheus-k8s - wait_for_port prometheus-k8s 1 - - # Apply annotations - sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=ng-ui" + juju config -m $MODEL_NAME nbi site_url=https://nbi.${API_SERVER}.nip.io + juju config -m $MODEL_NAME ng-ui site_url=https://ui.${API_SERVER}.nip.io + juju config -m $MODEL_NAME grafana site_url=https://grafana.${API_SERVER}.nip.io + juju config -m $MODEL_NAME prometheus site_url=https://prometheus.${API_SERVER}.nip.io + + echo "Waiting for deployment to finish..." + check_osm_deployed + echo "OSM with charms deployed" } function check_osm_deployed() { @@ -318,7 +318,7 @@ function create_overlay() { sudo snap install yq local HOME=/home/$USER local vca_user=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.user - ) - local vca_password=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.password - ) + local vca_secret=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.password - ) local vca_host=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.api-endpoints[0] - | cut -d ":" -f 1) local vca_port=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.api-endpoints[0] - | cut -d ":" -f 2) local vca_pubkey=\"$(cat $HOME/.local/share/juju/ssh/juju_id_rsa.pub)\" @@ -332,20 +332,20 @@ function create_overlay() { # Generate a new overlay.yaml, overriding any existing one cat << EOF > /tmp/vca-overlay.yaml applications: - lcm-k8s: + lcm: options: vca_user: $vca_user - vca_password: $vca_password + vca_secret: $vca_secret vca_host: $vca_host vca_port: $vca_port vca_pubkey: $vca_pubkey vca_cacert: $vca_cacert vca_cloud: $vca_cloud vca_k8s_cloud: $K8S_CLOUD_NAME - mon-k8s: + mon: options: vca_user: $vca_user - vca_password: $vca_password + vca_secret: $vca_secret vca_host: $vca_host vca_cacert: $vca_cacert EOF @@ -354,52 +354,26 @@ EOF } function generate_images_overlay(){ - cat << EOF > /tmp/nbi_registry.yaml -registrypath: ${REGISTRY_URL}opensourcemano/nbi:$TAG -EOF - cat << EOF > /tmp/ng_ui_registry.yaml -registrypath: ${REGISTRY_URL}opensourcemano/ng-ui:$TAG -EOF - if [ ! -z "$REGISTRY_USERNAME" ] ; then - REGISTRY_CREDENTIALS=$(cat < /tmp/images-overlay.yaml - image_username: $REGISTRY_USERNAME - image_password: $REGISTRY_PASSWORD + charms_with_resources="nbi lcm mon pol ng-ui ro pla keystone" + for charm in $charms_with_resources; do + cat << EOF > /tmp/${charm}_registry.yaml +registrypath: ${REGISTRY_URL}opensourcemano/${charm}:$TAG EOF - ); - echo username: $REGISTRY_USERNAME >> /tmp/nbi_registry.yaml - echo password: $REGISTRY_PASSWORD >> /tmp/nbi_registry.yaml - echo username: $REGISTRY_USERNAME >> /tmp/ng_ui_registry.yaml - echo password: $REGISTRY_PASSWORD >> /tmp/ng_ui_registry.yaml -fi + if [ ! -z "$REGISTRY_USERNAME" ] ; then + echo username: $REGISTRY_USERNAME >> /tmp/${charm}_registry.yaml + echo password: $REGISTRY_PASSWORD >> /tmp/${charm}_registry.yaml + fi - cat << EOF > /tmp/images-overlay.yaml -applications: - lcm-k8s: - options: - image: ${REGISTRY_URL}opensourcemano/lcm:$TAG ${REGISTRY_CREDENTIALS} - mon-k8s: - options: - image: ${REGISTRY_URL}opensourcemano/mon:$TAG ${REGISTRY_CREDENTIALS} - ro-k8s: - options: - image: ${REGISTRY_URL}opensourcemano/ro:$TAG ${REGISTRY_CREDENTIALS} - nbi: - resources: - image: /tmp/nbi_registry.yaml - pol-k8s: - options: - image: ${REGISTRY_URL}opensourcemano/pol:$TAG ${REGISTRY_CREDENTIALS} - pla: - options: - image: ${REGISTRY_URL}opensourcemano/pla:$TAG ${REGISTRY_CREDENTIALS} - ng-ui: + cat << EOF >> /tmp/images-overlay.yaml + ${charm}: resources: - image: /tmp/ng_ui_registry.yaml - keystone: - options: - image: ${REGISTRY_URL}opensourcemano/keystone:$TAG ${REGISTRY_CREDENTIALS} + image: /tmp/${charm}_registry.yaml + EOF + done + mv /tmp/images-overlay.yaml $IMAGES_OVERLAY_FILE } @@ -454,7 +428,7 @@ function install_microstack() { ubuntu1604 ssh-keygen -t rsa -N "" -f ~/.ssh/microstack microstack.openstack keypair create --public-key ~/.ssh/microstack.pub microstack - export OSM_HOSTNAME=`juju status --format json | jq -rc '.applications."nbi".address'` + export OSM_HOSTNAME=`juju status -m $MODEL_NAME --format json | jq -rc '.applications."nbi".address'` osm vim-create --name microstack-site \ --user admin \ --password keystone \ @@ -478,24 +452,40 @@ check_arguments $@ mkdir -p ~/.osm install_snaps bootstrap_k8s_lxd -deploy_charmed_osm -install_osmclient -export OSM_HOSTNAME=$(juju config nbi site_url | sed "s/http.*\?:\/\///"):443 -add_local_k8scluster +create_overlay +if [ -v ONLY_VCA ]; then + HOME=/home/$USER + vca_user=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.user - ) + vca_secret=$(cat $HOME/.local/share/juju/accounts.yaml | yq e .controllers.$CONTROLLER_NAME.password - ) + vca_host=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.api-endpoints[0] - | cut -d ":" -f 1) + vca_port=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.api-endpoints[0] - | cut -d ":" -f 2) + vca_pubkey=\"$(cat $HOME/.local/share/juju/ssh/juju_id_rsa.pub)\" + vca_cloud="lxd-cloud" + vca_cacert=$(cat $HOME/.local/share/juju/controllers.yaml | yq e .controllers.$CONTROLLER_NAME.ca-cert - | base64 | tr -d \\n) + hostname=`cat /etc/hostname` + + echo "Use the following command to register the installed VCA to your OSM:" + echo -e " osm vca-add --endpoints $vca_host:$vca_port \\\n --user $vca_user \\\n --secret $vca_secret \\\n --cacert $vca_cacert \\\n --lxd-cloud lxd-cloud \\\n --lxd-credentials lxd-cloud \\\n --k8s-cloud microk8s \\\n --k8s-credentials microk8s\\\n $hostname-vca" +else + deploy_charmed_osm + install_osmclient + export OSM_HOSTNAME=$(juju config -m $MODEL_NAME nbi site_url | sed "s/http.*\?:\/\///"):443 + sleep 10 + add_local_k8scluster + if [ -v MICROSTACK ]; then + install_microstack + fi -if [ -v MICROSTACK ]; then - install_microstack + echo "Your installation is now complete, follow these steps for configuring the osmclient:" + echo + echo "1. Create the OSM_HOSTNAME environment variable with the NBI IP" + echo + echo "export OSM_HOSTNAME=$OSM_HOSTNAME" + echo + echo "2. Add the previous command to your .bashrc for other Shell sessions" + echo + echo "echo \"export OSM_HOSTNAME=$OSM_HOSTNAME\" >> ~/.bashrc" + echo + echo "DONE" fi - -echo "Your installation is now complete, follow these steps for configuring the osmclient:" -echo -echo "1. Create the OSM_HOSTNAME environment variable with the NBI IP" -echo -echo "export OSM_HOSTNAME=$OSM_HOSTNAME" -echo -echo "2. Add the previous command to your .bashrc for other Shell sessions" -echo -echo "echo \"export OSM_HOSTNAME=$OSM_HOSTNAME\" >> ~/.bashrc" -echo -echo "DONE"