Forked from bloodearnest/update-juju-lxd-images.sh
Created
February 27, 2017 00:39
-
-
Save jamesbeedy/e0332ba434a02cae4ed5bd0ec6d607ca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# This script will create xenial and trusty lxd images that will be used by the | |
# lxd provider in juju 2.1+ It is for use with the lxd provider for local | |
# development and preinstalls a common set of production packages. | |
# | |
# This is important, as between them, basenode and layer-basic install ~111 | |
# packages, before we even get to any packages installed by your charm. | |
# | |
# It also installs some helpful development tools, and pre-downloads some | |
# commonly used packages. | |
# | |
# This dramatically speeds up the install hooks for lxd deploys. On my slow | |
# laptop, average install hook time went from ~7min down to ~1 minute. | |
set -eux | |
# basenode installs all the things. 64 packages on xenial to be exact, | |
# including python2 and ruby :( | |
BASENODE="python-cheetah python-yaml python-netaddr facter lldpd bzr rsync snmpd ethtool ntp" | |
# Basenode also installs and configures postfix via preseed, so we don't | |
# install it here, we instead download it in $DOWNLOAD_PACKAGES below | |
# The basic layer also installs all the things. 47 packages. | |
LAYER_BASIC="gcc build-essential python3-pip python3-setuptools python3-yaml" | |
# the basic layer also installs virtualenv, but the name changed in xenial. | |
TRUSTY_PACKAGES="python-virtualenv" | |
XENIAL_PACKAGES="virtualenv" | |
# as an optimisation, predownload common packages for charms we use a lot | |
DOWNLOAD_PACKAGES="postgresql memcached haproxy postfix" | |
# these are just developer conveniences | |
DEVEL="make tree vim curl jq silversearcher-ag postgresql-client libpq-dev python3-dev" | |
PACKAGES="$BASENODE $LAYER_BASIC $DEVEL" | |
run() | |
{ | |
series=$1 | |
container=juju-${series}-base | |
alias=juju/$series/amd64 | |
lxc delete $container -f || true | |
lxc launch ubuntu:$series $container | |
sleep 5 # wait for network | |
lxc exec $container -- apt update -y | |
lxc exec $container -- apt upgrade -y | |
lxc exec $container -- apt install -y $PACKAGES $2 | |
lxc exec $container -- apt install -d -y $DOWNLOAD_PACKAGES | |
lxc stop $container | |
lxc image delete $alias || true | |
lxc publish $container --alias $alias description="$series juju dev image ($(date +%Y%m%d))" | |
} | |
run xenial "$XENIAL_PACKAGES" | |
run trusty "$TRUSTY_PACKAGES" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment