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 $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
}
ssl-hostname-verification: false
EOF
openssl req -nodes -new -x509 -keyout /tmp/.osm/client.key -out /tmp/.osm/client.crt -days 365 -subj "/C=FR/ST=Nice/L=Nice/O=ETSI/OU=OSM/CN=osm.etsi.org"
- local server_cert=`cat /var/snap/lxd/common/lxd/server.crt | sed 's/^/ /'`
- local client_cert=`cat /tmp/.osm/client.crt | sed 's/^/ /'`
- local client_key=`cat /tmp/.osm/client.key | sed 's/^/ /'`
-
cat << EOF > $LXD_CREDENTIALS
credentials:
$OSM_VCA_CLOUDNAME:
lxd-cloud:
auth-type: certificate
- server-cert: |
-$server_cert
- client-cert: |
-$client_cert
- client-key: |
-$client_key
+ server-cert: /var/snap/lxd/common/lxd/server.crt
+ client-cert: /tmp/.osm/client.crt
+ 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]
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function juju_createcontroller() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- if ! juju show-controller $OSM_STACK_NAME &> /dev/null; then
- # Not found created, create the controller
- sudo usermod -a -G lxd ${USER}
- sg lxd -c "juju bootstrap --bootstrap-series=xenial --agent-version=$JUJU_AGENT_VERSION $OSM_VCA_CLOUDNAME $OSM_STACK_NAME"
+ 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
- [ $(juju controllers | awk "/^${OSM_STACK_NAME}[\*| ]/{print $1}"|wc -l) -eq 1 ] || FATAL "Juju installation failed"
- juju controller-config features=[k8s-operators]
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
}
DEBUG_INSTALL=""
INSTALL_CACHELXDIMAGES=""
INSTALL_NOJUJU=""
-JUJU_AGENT_VERSION=2.9.17
+JUJU_AGENT_VERSION=2.9.34
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}"
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}"
K)
CONTROLLER_NAME="${OPTARG}"
;;
+ P)
+ OSM_BEHIND_PROXY="y"
+ ;;
-)
[ "${OPTARG}" == "help" ] && usage && exit 0
[ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="--debug" && continue
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_install
+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
fi
- juju_createcontroller
juju_createproxy
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
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_controller
-
-
+track juju juju_controller_ok