| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # |
| 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. |
| 6 | # |
| 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 |
| 9 | # a cron job. |
| 10 | set -eux |
| 11 | |
| 12 | # The basic charm layer also installs all the things. 47 packages. |
| 13 | LAYER_BASIC="gcc build-essential python3-pip python3-setuptools python3-yaml" |
| 14 | |
| 15 | # the basic layer also installs virtualenv, but the name changed in xenial. |
| 16 | TRUSTY_PACKAGES="python-virtualenv" |
| 17 | XENIAL_PACKAGES="virtualenv" |
| 18 | |
| 19 | # Predownload common packages used by your charms in development |
| 20 | DOWNLOAD_PACKAGES="" |
| 21 | |
| 22 | PACKAGES="$LAYER_BASIC $DOWNLOAD_PACKAGES" |
| 23 | |
| 24 | function cache() { |
| 25 | series=$1 |
| 26 | container=juju-${series}-base |
| 27 | alias=juju/$series/amd64 |
| 28 | |
| 29 | lxc delete $container -f || true |
| 30 | lxc launch ubuntu:$series $container |
| Adam Israel | 32a79fc | 2017-04-24 12:53:09 -0400 | [diff] [blame] | 31 | |
| 32 | # Wait for the container to get an IP address |
| 33 | lxc exec $container -- bash -c "for i in {1..60}; do sleep 1; ping -c1 10.44.127.1 &> /dev/null && break; done" |
| Adam Israel | 736f9e7 | 2017-02-23 15:36:35 +0100 | [diff] [blame] | 34 | |
| 35 | lxc exec $container -- apt-get update -y |
| 36 | lxc exec $container -- apt-get upgrade -y |
| 37 | lxc exec $container -- apt-get install -y $PACKAGES $2 |
| 38 | lxc stop $container |
| 39 | |
| 40 | lxc image delete $alias || true |
| 41 | lxc publish $container --alias $alias description="$series juju dev image ($(date +%Y%m%d))" |
| 42 | |
| 43 | lxc delete $container -f || true |
| 44 | } |
| 45 | |
| 46 | cache trusty "$TRUSTY_PACKAGES" |
| 47 | cache xenial "$XENIAL_PACKAGES" |