Update OSM installer to allow an external IP address for the cluster

Change-Id: Ic760f427dddbaf50532c87074834585b4674cd7e
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
Signed-off-by: ramonsalguer <javier.ramon@telefonica.com>
diff --git a/installers/full_install_osm.sh b/installers/full_install_osm.sh
index c3fbb8d..f6f30e0 100755
--- a/installers/full_install_osm.sh
+++ b/installers/full_install_osm.sh
@@ -187,9 +187,10 @@
         python3 -m pip install -r /usr/lib/python3/dist-packages/osmclient/requirements.txt
     fi
     echo -e "\nOSM client installed"
-    echo -e "OSM client assumes that OSM host is running in localhost (127.0.0.1)."
-    echo -e "In case you want to interact with a different OSM host, you will have to configure this env variable in your .bashrc file:"
-    echo "     export OSM_HOSTNAME=nbi.${OSM_DEFAULT_IP}.nip.io"
+    echo "You can get the OSM NBI endpoint using the following command"
+    echo '     kubectl -n osm get ingress nbi-ingress -o jsonpath="{.spec.rules[0].host}"'
+    echo "You will have to configure this env variable in your .bashrc file:"
+    echo "     export OSM_HOSTNAME=nbi.${OSM_K8S_EXTERNAL_IP}.nip.io"
     [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
     return 0
 }
@@ -222,10 +223,10 @@
     [ ! "$OSM_DOCKER_TAG" == "testing-daily" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set-string global.image.tag=${OSM_DOCKER_TAG}"
     [ ! "$OSM_DOCKER_TAG" == "testing-daily" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.sidecarContainers.prometheus-config-sidecar.image=${DOCKER_REGISTRY_URL}${DOCKER_USER}/prometheus:${OSM_DOCKER_TAG}"
 
-    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.hostname=${OSM_DEFAULT_IP}.nip.io"
-    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set grafana.ingress.hosts={grafana.${OSM_DEFAULT_IP}.nip.io}"
-    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.ingress.hosts={prometheus.${OSM_DEFAULT_IP}.nip.io}"
-    # OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.alertmanager.ingress.hosts={alertmanager.${OSM_DEFAULT_IP}.nip.io}"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.hostname=${OSM_K8S_EXTERNAL_IP}.nip.io"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set grafana.ingress.hosts={grafana.${OSM_K8S_EXTERNAL_IP}.nip.io}"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.ingress.hosts={prometheus.${OSM_K8S_EXTERNAL_IP}.nip.io}"
+    # OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.alertmanager.ingress.hosts={alertmanager.${OSM_K8S_EXTERNAL_IP}.nip.io}"
     if [ -z "${INSTALL_MGMT_CLUSTER}" ]; then
         OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.enabled=false"
     else
@@ -290,7 +291,7 @@
 
 function install_osm_ngsa_service() {
     [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    NGSA_OPTS="-i ${OSM_DEFAULT_IP} -d ${OSM_HELM_WORK_DIR} -D ${OSM_DEVOPS} -s ${OSM_NAMESPACE} -t ${OSM_DOCKER_TAG} -U ${DOCKER_USER} ${DEBUG_INSTALL}"
+    NGSA_OPTS="-i ${OSM_K8S_EXTERNAL_IP} -d ${OSM_HELM_WORK_DIR} -D ${OSM_DEVOPS} -s ${OSM_NAMESPACE} -t ${OSM_DOCKER_TAG} -U ${DOCKER_USER} ${DEBUG_INSTALL}"
     [ -n "${DOCKER_REGISTRY_URL}" ] && NGSA_OPTS="${NGSA_OPTS} -r ${DOCKER_REGISTRY_URL}"
     $OSM_DEVOPS/installers/install_ngsa.sh ${NGSA_OPTS} || \
     FATAL_TRACK install_osm_ngsa_service "install_ngsa.sh failed"
@@ -300,7 +301,7 @@
 function add_local_k8scluster() {
     [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
     # OSM_HOSTNAME=$(kubectl get --namespace osm -o jsonpath="{.spec.rules[0].host}" ingress nbi-ingress)
-    OSM_HOSTNAME="nbi.${OSM_DEFAULT_IP}.nip.io:443"
+    OSM_HOSTNAME="nbi.${OSM_K8S_EXTERNAL_IP}.nip.io:443"
     /usr/bin/osm --hostname ${OSM_HOSTNAME} --all-projects vim-create \
       --name _system-osm-vim \
       --account_type dummy \
@@ -437,6 +438,7 @@
         FATAL_TRACK k8scluster "install_cluster_addons.sh failed for kubeadm cluster"
     elif [ "${K8S_CLUSTER_ENGINE}" == "k3s" ]; then
         K3S_INSTALL_OPTS="-i ${OSM_DEFAULT_IP} -D ${OSM_DEVOPS} ${DEBUG_INSTALL}"
+        [ "${OSM_K8S_EXTERNAL_IP}" != "${OSM_DEFAULT_IP}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -e ${OSM_K8S_EXTERNAL_IP}"
         [ -n "${DOCKER_PROXY_URL}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -p ${DOCKER_PROXY_URL}"
         [ -n "${DOCKER_REGISTRY_URL}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -d ${DOCKER_REGISTRY_URL}"
         [ -n "${DOCKER_REGISTRY_USER}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -u ${DOCKER_REGISTRY_USER}"
@@ -501,6 +503,7 @@
     [ -z "$OSM_DEFAULT_IF" ] && FATAL "Not possible to determine the interface with the default route 0.0.0.0"
     OSM_DEFAULT_IP=`ip -o -4 a s ${OSM_DEFAULT_IF} |awk '{split($4,a,"/"); print a[1]; exit}'`
     [ -z "$OSM_DEFAULT_IP" ] && FATAL "Not possible to determine the IP address of the interface with the default route"
+    OSM_K8S_EXTERNAL_IP=${OSM_K8S_EXTERNAL_IP:-${OSM_DEFAULT_IP}}
 
     # configure apt proxy
     [ -n "$APT_PROXY_URL" ] && configure_apt_proxy $APT_PROXY_URL
@@ -697,6 +700,7 @@
     echo "OPENSTACK_VM_NAME"="$OPENSTACK_VM_NAME"
     echo "OSM_DEVOPS=$OSM_DEVOPS"
     echo "OSM_DOCKER_TAG=$OSM_DOCKER_TAG"
+    echo "OSM_K8S_EXTERNAL_IP=$OSM_K8S_EXTERNAL_IP"
     echo "OSM_HELM_WORK_DIR=$OSM_HELM_WORK_DIR"
     echo "OSM_NAMESPACE=$OSM_NAMESPACE"
     echo "OSM_VCA_HOST=$OSM_VCA_HOST"
@@ -802,7 +806,7 @@
 MODULE_DOCKER_TAG=
 OSM_INSTALLATION_TYPE="Default"
 
-while getopts ":a:c:r:n:k:u:R:D:o:O:N:H:S:s:t:U:P:A:l:L:K:d:p:T:f:F:G:M:-: hy" o; do
+while getopts ":a:c:e:r:n:k:u:R:D:o:O:N:H:S:s:t:U:P:A:l:L:K:d:p:T:f:F:G:M:-: hy" o; do
     case "${o}" in
         a)
             APT_PROXY_URL=${OPTARG}
@@ -814,6 +818,9 @@
             echo -e "Invalid argument for -c : ' ${K8S_CLUSTER_ENGINE}'\n" >&2
             usage && exit 1
             ;;
+        e)
+            OSM_K8S_EXTERNAL_IP="${OPTARG}"
+            ;;
         r)
             REPOSITORY="${OPTARG}"
             REPO_ARGS+=(-r "$REPOSITORY")