#!/bin/bash # Configurable params BRIDGE=${BRIDGE:-br0} CONTAINER=${CONTAINER:-TESTER} CONTAINER_IP=${CONTAINER_IP:-192.168.1.50} CONTAINER_CIDR=${CONTAINER_CIDR:-$CONTAINER_IP/24} CONTAINER_NETMASK=${CONTAINER_NETMASK:-255.255.255.0} CONTAINER_GATEWAY=${CONTAINER_GATEWAY:-192.168.1.1} NAMESERVER=${NAMESERVER:-192.168.1.1} COPYENV=${COPYENV:-1} WARMCACHE=${WARMCACHE:-0} # Shutdown any existing container lxc-stop -n $CONTAINER sleep 1 # This prevents zombie containers cgdelete -r cpu,net_cls:$CONTAINER sleep 1 # Destroy the old container lxc-destroy -n $CONTAINER sleep 1 # Warm the base image on first run or when WARMCACHE=1 CACHEDIR=/var/cache/lxc/natty/rootfs-amd64 if [ "$WARMCACHE" = "1" ] || [ ! -d $CACHEDIR ]; then if [ -d $CACHEDIR ]; then # Pre-cache files chroot $CACHEDIR apt-get update chroot $CACHEDIR apt-get install -y `cat apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"` chroot $CACHEDIR pip install `cat pips/*` fi fi # Create network configuration LXC_CONF=/tmp/net.conf cat > $LXC_CONF < $INTERFACES < $INSTALL_SH < /etc/rc.local echo "nameserver $NAMESERVER" | resolvconf -a eth0 sleep 1 # Create a stack user that is a member of the libvirtd group so that stack # is able to interact with libvirt. groupadd libvirtd useradd stack -s /bin/bash -d /opt -G libvirtd # a simple password - pass echo stack:pass | chpasswd # give stack ownership over /opt so it may do the work needed chown -R stack /opt # and has sudo ability (in the future this should be limited to only what # stack requires) echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers # Install and run stack.sh apt-get update apt-get -y --force-yes install git-core vim-nox sudo su -c "git clone git://github.com/cloudbuilders/nfs-stack.git /opt/nfs-stack" stack su -c "cd /opt/nfs-stack && ./stack.sh" stack EOF chmod 700 $INSTALL_SH # Make installer run on boot RC_LOCAL=$ROOTFS/etc/rc.local cat > $RC_LOCAL < /bin/remove_dead_cgroup.shecho "Removing dead cgroup .$CONTAINER." >> /var/log/cgroup rmdir /cgroup/$CONTAINER >> /var/log/cgroup 2>&1 echo "return value was $?" >> /var/log/cgroup EOF chmod 755 /bin/remove_dead_cgroup.sh echo /bin/remove_dead_cgroup.sh > /cgroup/release_agent echo 1 > /cgroup/notify_on_release