#!/bin/bash # Copyright 2016 Telefónica Investigación y Desarrollo S.A.U. # # 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. # # 20 Sep 2016 -- Gerardo Garcia -- adapted from template # HERE=$(realpath $(dirname $0)) OSM_JENKINS=$(dirname $HERE) . $OSM_JENKINS/common/all_funcs INFO "Installing packages" add-apt-repository -y ppa:juju/stable apt-get update apt-get install -y juju lxd squid-deb-proxy echo 'streams.canonical' > /etc/squid-deb-proxy/mirror-dstdomain.acl.d/20-juju-streams service squid-deb-proxy reload INFO "Configuring LXD" # ZFS doesn't work inside a nested container. ZFS should be configured in the host LXD. lxd init --auto lxd waitready systemctl stop lxd-bridge systemctl --system daemon-reload cat < /etc/default/lxd-bridge USE_LXD_BRIDGE="true" LXD_BRIDGE="lxdbr0" UPDATE_PROFILE="true" LXD_CONFILE="" LXD_DOMAIN="lxd" LXD_IPV4_ADDR="10.44.127.1" LXD_IPV4_NETMASK="255.255.255.0" LXD_IPV4_NETWORK="10.44.127.1/24" LXD_IPV4_DHCP_RANGE="10.44.127.2,10.44.127.254" LXD_IPV4_DHCP_MAX="252" LXD_IPV4_NAT="true" LXD_IPV6_ADDR="" LXD_IPV6_MASK="" LXD_IPV6_NETWORK="" LXD_IPV6_NAT="false" LXD_IPV6_PROXY="false" EOF systemctl enable lxd-bridge systemctl start lxd-bridge DEFAULT_INTERFACE=$(route -n | awk '$1~/^0.0.0.0/ {print $8}') DEFAULT_MTU=$( ip addr show $DEFAULT_INTERFACE | perl -ne 'if (/mtu\s(\d+)/) {print $1;}') INFO "Setting lxdbr0 MTU to $DEFAULT_MTU" # This sets the MTU of lxdbr0 on the host machine without the need to recycle # the interface or reboot the machine. ifconfig lxdbr0 mtu $DEFAULT_MTU # Setting the MTU in the default profile will be applied to every lxc container. # Existing containers will need to be restarted for the new MTU to take effect. # This will also persist the MTU change for the host's lxdbr0 lxc profile device set default eth0 mtu $DEFAULT_MTU INFO "Pre-caching Ubuntu:16.04 image (this may take several minutes)..." # Setup a daily cron to update the cached image cp $HERE/update-lxd-image.sh /etc/cron.daily # Run it for the first time /etc/cron.daily/update-lxd-image.sh xenial INFO "Bootstrapping VCA" juju bootstrap localhost osm \ --config default-series=xenial \ --config enable-os-refresh-update=true \ --config enable-os-upgrade=false \ --config apt-http-proxy=http://10.44.127.1:8000 RC=0 INFO "done, RC=$RC" exit $RC