blob: fc91aadc53272fafea00217a2224d11abaeae5ef [file] [log] [blame]
garciadeblas8802d142016-09-20 14:24:13 +02001#!/bin/bash
2# Copyright 2016 Telefónica Investigación y Desarrollo S.A.U.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
Adam Israel736f9e72017-02-23 15:36:35 +010015#
garciadeblas8802d142016-09-20 14:24:13 +020016# 20 Sep 2016 -- Gerardo Garcia -- adapted from template
Adam Israel736f9e72017-02-23 15:36:35 +010017#
garciadeblas8802d142016-09-20 14:24:13 +020018
garciadeblas0dd790c2016-09-20 17:23:48 +020019HERE=$(realpath $(dirname $0))
20OSM_JENKINS=$(dirname $HERE)
21. $OSM_JENKINS/common/all_funcs
22
Adam Israel736f9e72017-02-23 15:36:35 +010023INFO "Installing packages"
24add-apt-repository -y ppa:juju/stable
25apt-get update
26apt-get install -y juju lxd squid-deb-proxy
27
28echo 'streams.canonical' > /etc/squid-deb-proxy/mirror-dstdomain.acl.d/20-juju-streams
garciadeblas828aaf82017-04-07 21:07:15 +020029service squid-deb-proxy reload
Adam Israel736f9e72017-02-23 15:36:35 +010030
31INFO "Configuring LXD"
32# ZFS doesn't work inside a nested container. ZFS should be configured in the host LXD.
garciadeblas8802d142016-09-20 14:24:13 +020033lxd init --auto
34lxd waitready
35systemctl stop lxd-bridge
36systemctl --system daemon-reload
37cat <<EOF > /etc/default/lxd-bridge
38USE_LXD_BRIDGE="true"
39LXD_BRIDGE="lxdbr0"
40UPDATE_PROFILE="true"
41LXD_CONFILE=""
42LXD_DOMAIN="lxd"
43LXD_IPV4_ADDR="10.44.127.1"
44LXD_IPV4_NETMASK="255.255.255.0"
45LXD_IPV4_NETWORK="10.44.127.1/24"
46LXD_IPV4_DHCP_RANGE="10.44.127.2,10.44.127.254"
47LXD_IPV4_DHCP_MAX="252"
48LXD_IPV4_NAT="true"
49LXD_IPV6_ADDR=""
50LXD_IPV6_MASK=""
51LXD_IPV6_NETWORK=""
52LXD_IPV6_NAT="false"
53LXD_IPV6_PROXY="false"
54EOF
55
56systemctl enable lxd-bridge
57systemctl start lxd-bridge
Adam Israel736f9e72017-02-23 15:36:35 +010058
Adam Israel6a2d5332017-04-27 20:45:51 -040059DEFAULT_INTERFACE=$(route -n | awk '$1~/^0.0.0.0/ {print $8}')
60DEFAULT_MTU=$( ip addr show $DEFAULT_INTERFACE | perl -ne 'if (/mtu\s(\d+)/) {print $1;}')
61
62INFO "Setting lxdbr0 MTU to $DEFAULT_MTU"
Adam Israela885f622017-11-08 20:23:50 -050063
64# This sets the MTU of lxdbr0 on the host machine without the need to recycle
65# the interface or reboot the machine.
Adam Israel6a2d5332017-04-27 20:45:51 -040066ifconfig lxdbr0 mtu $DEFAULT_MTU
67
Adam Israela885f622017-11-08 20:23:50 -050068# Setting the MTU in the default profile will be applied to every lxc container.
69# Existing containers will need to be restarted for the new MTU to take effect.
70# This will also persist the MTU change for the host's lxdbr0
71lxc profile device set default eth0 mtu $DEFAULT_MTU
garciadeblas32762292017-11-07 16:49:08 +010072
Adam Israel736f9e72017-02-23 15:36:35 +010073INFO "Pre-caching Ubuntu:16.04 image (this may take several minutes)..."
74
75# Setup a daily cron to update the cached image
76cp $HERE/update-lxd-image.sh /etc/cron.daily
77
78# Run it for the first time
79/etc/cron.daily/update-lxd-image.sh xenial
80
81INFO "Bootstrapping VCA"
82juju bootstrap localhost osm \
83--config default-series=xenial \
Adam Israel1dd7bdd2018-02-22 17:09:39 -050084--config enable-os-refresh-update=true \
Adam Israel736f9e72017-02-23 15:36:35 +010085--config enable-os-upgrade=false \
86--config apt-http-proxy=http://10.44.127.1:8000
garciadeblas8802d142016-09-20 14:24:13 +020087
88RC=0
89
90INFO "done, RC=$RC"
91exit $RC