3 # This script will create xenial and trusty lxd images that will be used by the
4 # lxd provider in juju 2.1+ It is for use with the lxd provider for local
5 # development and preinstalls a common set of production packages.
7 # This dramatically speeds up the install hooks for lxd deploys by
8 # pre-installing common packages. It is intended to run daily as part of
12 # The basic charm layer also installs all the things. 47 packages.
13 LAYER_BASIC
="gcc build-essential python3-pip python3-setuptools python3-yaml"
15 # the basic layer also installs virtualenv, but the name changed in xenial.
16 TRUSTY_PACKAGES
="python-virtualenv"
17 XENIAL_PACKAGES
="virtualenv"
19 # Predownload common packages used by your charms in development
22 PACKAGES
="$LAYER_BASIC $DOWNLOAD_PACKAGES"
24 # Packages from pypi to pre-install
25 PYPI
="charms.reactive charmhelpers paramiko>=1.16.0,<1.17"
29 container
=juju-
${series}-base
30 alias=juju
/$series/amd64
32 lxc delete
$container -f || true
33 lxc launch ubuntu
:$series $container
35 # Wait for the container to get an IP address
36 lxc
exec $container -- bash
-c "for i in {1..60}; do sleep 1; ping -c1 10.44.127.1 &> /dev/null && break; done"
38 lxc
exec $container -- apt-get update
-y
39 lxc
exec $container -- apt-get upgrade
-y
40 lxc
exec $container -- apt-get
install -y $PACKAGES $2
41 lxc
exec $container -- pip3
install --upgrade $PYPI
44 lxc image delete
$alias || true
45 lxc publish
$container --alias $alias description
="$series juju dev image ($(date +%Y%m%d))"
47 lxc delete
$container -f || true
50 cache trusty
"$TRUSTY_PACKAGES"
51 cache xenial
"$XENIAL_PACKAGES"