## curtin development ##

This document describes how to use kvm and ubuntu cloud images
to develop curtin or test install configurations inside kvm.

## get some dependencies ##
sudo apt-get -qy install kvm libvirt-bin cloud-utils bzr

## get cloud image to boot (-disk1.img) and one to install (-root.tar.gz)
mkdir -p ~/download
DLDIR=$( cd ~/download && pwd )
rel="trusty"
arch=amd64
burl="http://cloud-images.ubuntu.com/$rel/current/"
for f in $rel-server-cloudimg-${arch}-root.tar.gz $rel-server-cloudimg-${arch}-disk1.img; do
  wget "$burl/$f" -O $DLDIR/$f; done
( cd $DLDIR && qemu-img convert -O qcow $rel-server-cloudimg-${arch}-disk1.img $rel-server-cloudimg-${arch}-disk1.qcow2)

BOOTIMG="$DLDIR/$rel-server-cloudimg-${arch}-disk1.qcow2"
ROOTTGZ="$DLDIR/$rel-server-cloudimg-${arch}-root.tar.gz"

## get curtin
mkdir -p ~/src
bzr init-repo ~/src/curtin
( cd ~/src/curtin && bzr  branch lp:curtin trunk.dist )
( cd ~/src/curtin && bzr branch trunk.dist trunk )

## work with curtin
cd ~/src/curtin/trunk
# use 'launch' to launch a kvm instance with user data to pack
# up local curtin and run it inside instance.
./tools/launch $BOOTIMG --publish $ROOTTGZ -- curtin install "PUBURL/${ROOTTGZ##*/}"

## notes about 'launch' ##
 * launch has --help so you can see that for some info.
 * '--publish' adds a web server at ${HTTP_PORT:-9923}
   and puts the files you want available there.  You can reference
   this url in config or cmdline with 'PUBURL'.  For example
   '--publish foo.img' will put 'foo.img' at PUBURL/foo.img.
 * launch sets 'ubuntu' user password to 'passw0rd'
 * launch runs 'kvm -curses'
   kvm -curses keyboard info:
     'alt-2' to go to qemu console
 * launch puts serial console to 'serial.log' (look there for stuff)
 * when logged in
   * you can look at /var/log/cloud-init-output.log
   * archive should be extracted in /curtin
   * shell archive should be in /var/lib/cloud/instance/scripts/part-002
 * when logged in, and archive available at


## other notes ##
 * need to add '--install-deps' or something for curtin
   cloud-image in 12.04 has no 'python3'
   ideally 'curtin --install-deps install' would get the things it needs
