3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
19 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
20 echo -e "usage: $0 [OPTIONS]"
21 echo -e "Install Juju for OSM"
23 echo -e " -h / --help: print this help"
24 echo -e " -D <devops path> use local devops installation path"
25 echo -e " -H <VCA host> use specific juju host controller IP"
26 echo -e " -S <VCA secret> use VCA/juju secret key"
27 echo -e " -P <VCA pubkey> use VCA/juju public key file"
28 echo -e " -l: LXD cloud yaml file"
29 echo -e " -L: LXD credentials yaml file"
30 echo -e " -K: Specifies the name of the controller to use - The controller must be already bootstrapped"
31 echo -e " --debug: debug mode"
32 echo -e " --cachelxdimages: cache local lxd images, create cronjob for that cache (will make installation longer)"
33 echo -e " --nojuju: do not juju, assumes already installed"
34 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
37 function install_lxd
() {
38 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
39 # Apply sysctl production values for optimal performance
40 sudo
cp ${OSM_DEVOPS}/installers
/60-lxd-production.conf
/etc
/sysctl.d
/60-lxd-production.conf
44 sudo apt-get remove
--purge -y liblxc1 lxc-common lxcfs lxd lxd-client
45 snap info lxd |
grep installed
> /dev
/null
47 sudo snap refresh lxd
--channel $LXD_VERSION/stable
49 sudo snap
install lxd
--channel $LXD_VERSION/stable
52 # Get default iface, IP and MTU
53 if [ -n "${OSM_DEFAULT_IF}" ]; then
54 OSM_DEFAULT_IF
=$
(ip route list|
awk '$1=="default" {print $5; exit}')
55 [ -z "${OSM_DEFAULT_IF}" ] && OSM_DEFAULT_IF
=$
(route
-n |
awk '$1~/^0.0.0.0/ {print $8; exit}')
56 [ -z "${OSM_DEFAULT_IF}" ] && FATAL_TRACK lxd
"Not possible to determine the interface with the default route 0.0.0.0"
58 DEFAULT_MTU
=$
(ip addr show
${OSM_DEFAULT_IF} | perl
-ne 'if (/mtu\s(\d+)/) {print $1;}')
59 OSM_DEFAULT_IP
=`ip -o -4 a s ${OSM_DEFAULT_IF} |awk '{split($4,a,"/"); print a[1]; exit}'`
60 [ -z "$OSM_DEFAULT_IP" ] && FATAL_TRACK lxd
"Not possible to determine the IP address of the interface with the default route"
63 sudo usermod
-a -G lxd
`whoami`
64 cat ${OSM_DEVOPS}/installers
/lxd-preseed.conf |
sed 's/^config: {}/config:\n core.https_address: '$OSM_DEFAULT_IP':8443/' | sg lxd
-c "lxd init --preseed"
65 sg lxd
-c "lxd waitready"
67 # Configure LXD to work behind a proxy
68 if [ -n "${OSM_BEHIND_PROXY}" ] ; then
69 [ -n "${HTTP_PROXY}" ] && sg lxd
-c "lxc config set core.proxy_http $HTTP_PROXY"
70 [ -n "${HTTPS_PROXY}" ] && sg lxd
-c "lxc config set core.proxy_https $HTTPS_PROXY"
71 [ -n "${NO_PROXY}" ] && sg lxd
-c "lxc config set core.proxy_ignore_hosts $NO_PROXY"
74 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
83 while getopts ":D:d:i:-: hP" o
; do
86 OSM_DEFAULT_IF
="${OPTARG}"
89 OSM_DOCKER_WORK_DIR
="${OPTARG}"
92 OSM_DEVOPS
="${OPTARG}"
98 [ "${OPTARG}" == "help" ] && usage
&& exit 0
99 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL
="y" && continue
100 echo -e "Invalid option: '--$OPTARG'\n" >&2
104 echo "Option -$OPTARG requires an argument" >&2
108 echo -e "Invalid option: '-$OPTARG'\n" >&2
120 source $OSM_DEVOPS/common
/logging
121 source $OSM_DEVOPS/common
/track
123 echo "DEBUG_INSTALL=$DEBUG_INSTALL"
124 echo "OSM_BEHIND_PROXY=$OSM_BEHIND_PROXY"
125 echo "OSM_DEFAULT_IF=$OSM_DEFAULT_IF"
126 echo "OSM_DEVOPS=$OSM_DEVOPS"
128 [ -z "$INSTALL_NOJUJU" ] && install_lxd
129 track prereq lxd_install_ok