| garciadeblas | 8802d14 | 2016-09-20 14:24:13 +0200 | [diff] [blame] | 1 | #!/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 Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 15 | # |
| garciadeblas | 8802d14 | 2016-09-20 14:24:13 +0200 | [diff] [blame] | 16 | # 20 Sep 2016 -- Gerardo Garcia -- adapted from template |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 17 | # |
| garciadeblas | 8802d14 | 2016-09-20 14:24:13 +0200 | [diff] [blame] | 18 | |
| garciadeblas | 0dd790c | 2016-09-20 17:23:48 +0200 | [diff] [blame] | 19 | HERE=$(realpath $(dirname $0)) |
| 20 | OSM_JENKINS=$(dirname $HERE) |
| 21 | . $OSM_JENKINS/common/all_funcs |
| 22 | |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 23 | INFO "Installing packages" |
| 24 | add-apt-repository -y ppa:juju/stable |
| 25 | apt-get update |
| 26 | apt-get install -y juju lxd squid-deb-proxy |
| 27 | |
| 28 | echo 'streams.canonical' > /etc/squid-deb-proxy/mirror-dstdomain.acl.d/20-juju-streams |
| garciadeblas | 828aaf8 | 2017-04-07 21:07:15 +0200 | [diff] [blame] | 29 | service squid-deb-proxy reload |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 30 | |
| 31 | INFO "Configuring LXD" |
| 32 | # ZFS doesn't work inside a nested container. ZFS should be configured in the host LXD. |
| garciadeblas | 8802d14 | 2016-09-20 14:24:13 +0200 | [diff] [blame] | 33 | lxd init --auto |
| 34 | lxd waitready |
| 35 | systemctl stop lxd-bridge |
| 36 | systemctl --system daemon-reload |
| 37 | cat <<EOF > /etc/default/lxd-bridge |
| 38 | USE_LXD_BRIDGE="true" |
| 39 | LXD_BRIDGE="lxdbr0" |
| 40 | UPDATE_PROFILE="true" |
| 41 | LXD_CONFILE="" |
| 42 | LXD_DOMAIN="lxd" |
| 43 | LXD_IPV4_ADDR="10.44.127.1" |
| 44 | LXD_IPV4_NETMASK="255.255.255.0" |
| 45 | LXD_IPV4_NETWORK="10.44.127.1/24" |
| 46 | LXD_IPV4_DHCP_RANGE="10.44.127.2,10.44.127.254" |
| 47 | LXD_IPV4_DHCP_MAX="252" |
| 48 | LXD_IPV4_NAT="true" |
| 49 | LXD_IPV6_ADDR="" |
| 50 | LXD_IPV6_MASK="" |
| 51 | LXD_IPV6_NETWORK="" |
| 52 | LXD_IPV6_NAT="false" |
| 53 | LXD_IPV6_PROXY="false" |
| 54 | EOF |
| 55 | |
| 56 | systemctl enable lxd-bridge |
| 57 | systemctl start lxd-bridge |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 58 | |
| Adam Israel | 6a2d533 | 2017-04-27 20:45:51 -0400 | [diff] [blame] | 59 | DEFAULT_INTERFACE=$(route -n | awk '$1~/^0.0.0.0/ {print $8}') |
| 60 | DEFAULT_MTU=$( ip addr show $DEFAULT_INTERFACE | perl -ne 'if (/mtu\s(\d+)/) {print $1;}') |
| 61 | |
| 62 | INFO "Setting lxdbr0 MTU to $DEFAULT_MTU" |
| Adam Israel | a885f62 | 2017-11-08 20:23:50 -0500 | [diff] [blame] | 63 | |
| 64 | # This sets the MTU of lxdbr0 on the host machine without the need to recycle |
| 65 | # the interface or reboot the machine. |
| Adam Israel | 6a2d533 | 2017-04-27 20:45:51 -0400 | [diff] [blame] | 66 | ifconfig lxdbr0 mtu $DEFAULT_MTU |
| 67 | |
| Adam Israel | a885f62 | 2017-11-08 20:23:50 -0500 | [diff] [blame] | 68 | # 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 |
| 71 | lxc profile device set default eth0 mtu $DEFAULT_MTU |
| garciadeblas | 3276229 | 2017-11-07 16:49:08 +0100 | [diff] [blame] | 72 | |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 73 | INFO "Pre-caching Ubuntu:16.04 image (this may take several minutes)..." |
| 74 | |
| 75 | # Setup a daily cron to update the cached image |
| 76 | cp $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 | |
| 81 | INFO "Bootstrapping VCA" |
| 82 | juju bootstrap localhost osm \ |
| 83 | --config default-series=xenial \ |
| Adam Israel | 1dd7bdd | 2018-02-22 17:09:39 -0500 | [diff] [blame] | 84 | --config enable-os-refresh-update=true \ |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 85 | --config enable-os-upgrade=false \ |
| 86 | --config apt-http-proxy=http://10.44.127.1:8000 |
| garciadeblas | 8802d14 | 2016-09-20 14:24:13 +0200 | [diff] [blame] | 87 | |
| 88 | RC=0 |
| 89 | |
| 90 | INFO "done, RC=$RC" |
| 91 | exit $RC |