echo -e " -P <VCA pubkey> use VCA/juju public key file"
echo -e " -A <VCA apiproxy> use VCA/juju API proxy"
echo -e " -o <COMPONENT>: ONLY installs the specified component (k8s_monitor, ng-sa, k8scluster, docker, deploy-osm)"
- echo -e " -O <openrc file path/cloud name>: install OSM to an OpenStack infrastructure. <openrc file/cloud name> is required. If a <cloud name> is used, the clouds.yaml file should be under ~/.config/openstack/ or /etc/openstack/"
- echo -e " -N <openstack public network name/ID>: public network name required to setup OSM to OpenStack"
- echo -e " -f <path to SSH public key>: public SSH key to use to deploy OSM to OpenStack"
- echo -e " -F <path to cloud-init file>: cloud-init userdata file to deploy OSM to OpenStack"
echo -e " -w <work dir>: Location to store runtime installation"
echo -e " -l: LXD cloud yaml file"
echo -e " -L: LXD credentials yaml file"
echo -e " --nohostclient: do not install the osmclient"
echo -e " --uninstall: uninstall OSM: remove the containers and delete NAT rules"
echo -e " --k8s_monitor: install the OSM kubernetes monitoring with prometheus and grafana"
- echo -e " --volume: create a VM volume when installing to OpenStack"
echo -e " --showopts: print chosen options and exit (only for debugging)"
echo -e " --charmed: Deploy and operate OSM with Charms on k8s"
echo -e " [--bundle <bundle path>]: Specify with which bundle to deploy OSM with charms (--charmed option)"
return 0
}
-function install_to_openstack() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-
- if [ -z "$2" ]; then
- FATAL "OpenStack installer requires a valid external network name"
- fi
-
- # Install Pip for Python3
- sudo apt install -y python3-pip python3-venv
- sudo -H LC_ALL=C python3 -m pip install -U pip
-
- # Create a venv to avoid conflicts with the host installation
- python3 -m venv $OPENSTACK_PYTHON_VENV
-
- source $OPENSTACK_PYTHON_VENV/bin/activate
-
- # Install Ansible, OpenStack client and SDK, latest openstack version supported is Train
- python -m pip install -U wheel
- python -m pip install -U "python-openstackclient<=4.0.2" "openstacksdk>=0.12.0,<=0.36.2" "ansible>=2.10,<2.11"
-
- # Install the Openstack cloud module (ansible>=2.10)
- ansible-galaxy collection install openstack.cloud
-
- export ANSIBLE_CONFIG="$OSM_DEVOPS/installers/openstack/ansible.cfg"
-
- OSM_INSTALLER_ARGS="${REPO_ARGS[@]}"
-
- ANSIBLE_VARS="external_network_name=$2 setup_volume=$3 server_name=$OPENSTACK_VM_NAME"
-
- if [ -n "$OPENSTACK_SSH_KEY_FILE" ]; then
- ANSIBLE_VARS+=" key_file=$OPENSTACK_SSH_KEY_FILE"
- fi
-
- if [ -n "$OPENSTACK_USERDATA_FILE" ]; then
- ANSIBLE_VARS+=" userdata_file=$OPENSTACK_USERDATA_FILE"
- fi
-
- # Execute the Ansible playbook based on openrc or clouds.yaml
- if [ -e "$1" ]; then
- . $1
- ansible-playbook -e installer_args="\"$OSM_INSTALLER_ARGS\"" -e "$ANSIBLE_VARS" \
- $OSM_DEVOPS/installers/openstack/site.yml
- else
- ansible-playbook -e installer_args="\"$OSM_INSTALLER_ARGS\"" -e "$ANSIBLE_VARS" \
- -e cloud_name=$1 $OSM_DEVOPS/installers/openstack/site.yml
- fi
-
- # Exit from venv
- deactivate
-
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
- return 0
-}
-
function arrange_docker_default_network_policy() {
echo -e "Fixing firewall so docker and LXD can share the same host without affecting each other."
sudo iptables -I DOCKER-USER -j ACCEPT
echo "INSTALL_ONLY_DEPLOY_OSM=$INSTALL_ONLY_DEPLOY_OSM"
echo "INSTALL_ONLY_DOCKER_CE=$INSTALL_ONLY_DOCKER_CE"
echo "INSTALL_ONLY_K8S_CLUSTER=$INSTALL_ONLY_K8S_CLUSTER"
- echo "INSTALL_TO_OPENSTACK=$INSTALL_TO_OPENSTACK"
- echo "INSTALL_VIMEMU=$INSTALL_VIMEMU"
- echo "OPENSTACK_PUBLIC_NET_NAME=$OPENSTACK_PUBLIC_NET_NAME"
- echo "OPENSTACK_OPENRC_FILE_OR_CLOUD=$OPENSTACK_OPENRC_FILE_OR_CLOUD"
- echo "OPENSTACK_ATTACH_VOLUME=$OPENSTACK_ATTACH_VOLUME"
- echo "OPENSTACK_SSH_KEY_FILE"="$OPENSTACK_SSH_KEY_FILE"
- echo "OPENSTACK_USERDATA_FILE"="$OPENSTACK_USERDATA_FILE"
- 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"
RELEASE="testing-daily"
REPOSITORY="testing"
INSTALL_K8S_MONITOR=""
-INSTALL_VIMEMU=""
LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd"
LXD_REPOSITORY_PATH=""
-INSTALL_TO_OPENSTACK=""
-OPENSTACK_OPENRC_FILE_OR_CLOUD=""
-OPENSTACK_PUBLIC_NET_NAME=""
-OPENSTACK_ATTACH_VOLUME="false"
-OPENSTACK_SSH_KEY_FILE=""
-OPENSTACK_USERDATA_FILE=""
-OPENSTACK_VM_NAME="server-osm"
-OPENSTACK_PYTHON_VENV="$HOME/.virtual-envs/osm"
INSTALL_ONLY=""
INSTALL_ONLY_DEPLOY_OSM=""
INSTALL_ONLY_DOCKER_CE=""
[ "${OPTARG}" == "k8scluster" ] && INSTALL_ONLY_K8S_CLUSTER="y" && continue
[ "${OPTARG}" == "deploy-osm" ] && INSTALL_ONLY_DEPLOY_OSM="y" && continue
;;
- O)
- INSTALL_TO_OPENSTACK="y"
- if [ -n "${OPTARG}" ]; then
- OPENSTACK_OPENRC_FILE_OR_CLOUD="${OPTARG}"
- else
- echo -e "Invalid argument for -O : ' $OPTARG'\n" >&2
- usage && exit 1
- fi
- ;;
- f)
- OPENSTACK_SSH_KEY_FILE="${OPTARG}"
- ;;
- F)
- OPENSTACK_USERDATA_FILE="${OPTARG}"
- ;;
- N)
- OPENSTACK_PUBLIC_NET_NAME="${OPTARG}"
- ;;
H)
OSM_VCA_HOST="${OPTARG}"
;;
[ "${OPTARG}" == "ha" ] && continue
[ "${OPTARG}" == "tag" ] && continue
[ "${OPTARG}" == "registry" ] && continue
- [ "${OPTARG}" == "volume" ] && OPENSTACK_ATTACH_VOLUME="true" && continue
[ "${OPTARG}" == "nocachelxdimages" ] && continue
[ "${OPTARG}" == "cachelxdimages" ] && INSTALL_CACHELXDIMAGES="--cachelxdimages" && continue
echo -e "Invalid option: '--$OPTARG'\n" >&2
os_info="${os_distro}_${os_release}"
os_info="${os_info// /_}"
-if [ -n "$CHARMED" ]; then
- # Charmed installation
- sudo snap install jq || FATAL "Could not install jq (snap package). Make sure that snap works"
- ${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-16.0-sixteen/README2.txt &> /dev/null
- echo -e "\nDONE"
- exit 0
-elif [ -n "$INSTALL_TO_OPENSTACK" ]; then
- # Installation to Openstack
- install_to_openstack $OPENSTACK_OPENRC_FILE_OR_CLOUD $OPENSTACK_PUBLIC_NET_NAME $OPENSTACK_ATTACH_VOLUME
- echo -e "\nDONE"
- exit 0
-else
- # Community_installer
- # Special cases go first
- if [ -n "$INSTALL_ONLY" ]; then
- setup_external_ip
- [ -n "$INSTALL_ONLY_DOCKER_CE" ] && install_docker_ce
- [ -n "$INSTALL_ONLY_K8S_CLUSTER" ] && install_k8s_cluster
- [ -n "$INSTALL_K8S_MONITOR" ] && install_k8s_monitoring
- [ -n "$INSTALL_ONLY_DEPLOY_OSM" ] && deploy_osm
- echo -e "\nDONE" && exit 0
- fi
- # This is where installation starts
- install_osm
- echo -e "\nDONE"
- exit 0
+# Community_installer
+# Special cases go first
+if [ -n "$INSTALL_ONLY" ]; then
+ setup_external_ip
+ [ -n "$INSTALL_ONLY_DOCKER_CE" ] && install_docker_ce
+ [ -n "$INSTALL_ONLY_K8S_CLUSTER" ] && install_k8s_cluster
+ [ -n "$INSTALL_K8S_MONITOR" ] && install_k8s_monitoring
+ [ -n "$INSTALL_ONLY_DEPLOY_OSM" ] && deploy_osm
+ echo -e "\nDONE" && exit 0
fi
+# This is where installation starts
+install_osm
+echo -e "\nDONE"
+exit 0
--- /dev/null
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -x
+
+DEBUG_INSTALL=${DEBUG_INSTALL:-}
+OSM_DEVOPS=${OSM_DEVOPS:-"/usr/share/osm-devops"}
+OPENSTACK_OPENRC_FILE_OR_CLOUD=${OPENSTACK_OPENRC_FILE_OR_CLOUD:-""}
+OPENSTACK_PUBLIC_NET_NAME=${OPENSTACK_PUBLIC_NET_NAME:-""}
+OPENSTACK_ATTACH_VOLUME=${OPENSTACK_ATTACH_VOLUME:-"false"}
+OPENSTACK_SSH_KEY_FILE=${OPENSTACK_SSH_KEY_FILE:-""}
+OPENSTACK_USERDATA_FILE=${OPENSTACK_USERDATA_FILE:-""}
+OPENSTACK_VM_NAME=${OPENSTACK_VM_NAME:-"server-osm"}
+OPENSTACK_PYTHON_VENV=${OPENSTACK_PYTHON_VENV:-"$HOME/.virtual-envs/osm"}
+echo "DEBUG_INSTALL=$DEBUG_INSTALL"
+echo "OSM_DEVOPS=$OSM_DEVOPS"
+echo "OPENSTACK_OPENRC_FILE_OR_CLOUD=$OPENSTACK_OPENRC_FILE_OR_CLOUD"
+echo "OPENSTACK_PUBLIC_NET_NAME=$OPENSTACK_PUBLIC_NET_NAME"
+echo "OPENSTACK_ATTACH_VOLUME=$OPENSTACK_ATTACH_VOLUME"
+echo "OPENSTACK_SSH_KEY_FILE"="$OPENSTACK_SSH_KEY_FILE"
+echo "OPENSTACK_USERDATA_FILE"="$OPENSTACK_USERDATA_FILE"
+echo "OPENSTACK_VM_NAME"="$OPENSTACK_VM_NAME"
+echo "OPENSTACK_PYTHON_VENV"="$OPENSTACK_PYTHON_VENV"
+
+source $OSM_DEVOPS/common/logging
+source $OSM_DEVOPS/common/track
+
+install_to_openstack $OPENSTACK_OPENRC_FILE_OR_CLOUD $OPENSTACK_PUBLIC_NET_NAME $OPENSTACK_ATTACH_VOLUME
+
+[ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
+
+if [ -z "${OPENSTACK_PUBLIC_NET_NAME}" ]; then
+ FATAL "OpenStack installer requires a valid external network name"
+fi
+
+# Install Pip for Python3
+sudo apt install -y python3-pip python3-venv
+sudo -H LC_ALL=C python3 -m pip install -U pip
+
+# Create a venv to avoid conflicts with the host installation
+python3 -m venv $OPENSTACK_PYTHON_VENV
+
+source $OPENSTACK_PYTHON_VENV/bin/activate
+
+# Install Ansible, OpenStack client and SDK, latest openstack version supported is Train
+python -m pip install -U wheel
+python -m pip install -U "python-openstackclient<=4.0.2" "openstacksdk>=0.12.0,<=0.36.2" "ansible>=2.10,<2.11"
+
+# Install the Openstack cloud module (ansible>=2.10)
+ansible-galaxy collection install openstack.cloud
+
+export ANSIBLE_CONFIG="$OSM_DEVOPS/installers/openstack/ansible.cfg"
+
+OSM_INSTALLER_ARGS="${REPO_ARGS[@]}"
+
+ANSIBLE_VARS="external_network_name=$OPENSTACK_PUBLIC_NET_NAME setup_volume=$OPENSTACK_ATTACH_VOLUME server_name=$OPENSTACK_VM_NAME"
+
+if [ -n "$OPENSTACK_SSH_KEY_FILE" ]; then
+ ANSIBLE_VARS+=" key_file=$OPENSTACK_SSH_KEY_FILE"
+fi
+
+if [ -n "$OPENSTACK_USERDATA_FILE" ]; then
+ ANSIBLE_VARS+=" userdata_file=$OPENSTACK_USERDATA_FILE"
+fi
+
+# Execute the Ansible playbook based on openrc or clouds.yaml
+if [ -e "$OPENSTACK_OPENRC_FILE_OR_CLOUD" ]; then
+ . $OPENSTACK_OPENRC_FILE_OR_CLOUD
+ ansible-playbook -e installer_args="\"$OSM_INSTALLER_ARGS\"" -e "$ANSIBLE_VARS" \
+ $OSM_DEVOPS/installers/openstack/site.yml
+else
+ ansible-playbook -e installer_args="\"$OSM_INSTALLER_ARGS\"" -e "$ANSIBLE_VARS" \
+ -e cloud_name=$OPENSTACK_OPENRC_FILE_OR_CLOUD $OSM_DEVOPS/installers/openstack/site.yml
+fi
+
+# Exit from venv
+deactivate
+
+[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
+exit 0