|  | #!/usr/bin/env bash | 
|  |  | 
|  | # **copy_dev_environment_to_uec.sh** | 
|  |  | 
|  | # Echo commands | 
|  | set -o xtrace | 
|  |  | 
|  | # Exit on error to stop unexpected errors | 
|  | set -o errexit | 
|  |  | 
|  | # Keep track of the current directory | 
|  | TOOLS_DIR=$(cd $(dirname "$0") && pwd) | 
|  | TOP_DIR=$(cd $TOOLS_DIR/..; pwd) | 
|  |  | 
|  | # Import common functions | 
|  | . $TOP_DIR/functions | 
|  |  | 
|  | # Change dir to top of devstack | 
|  | cd $TOP_DIR | 
|  |  | 
|  | # Echo usage | 
|  | usage() { | 
|  | echo "Add stack user and keys" | 
|  | echo "" | 
|  | echo "Usage: $0 [full path to raw uec base image]" | 
|  | } | 
|  |  | 
|  | # Make sure this is a raw image | 
|  | if ! qemu-img info $1 | grep -q "file format: raw"; then | 
|  | usage | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | # Mount the image | 
|  | DEST=/opt/stack | 
|  | STAGING_DIR=/tmp/`echo $1 | sed  "s/\//_/g"`.stage.user | 
|  | mkdir -p $STAGING_DIR | 
|  | umount $STAGING_DIR || true | 
|  | sleep 1 | 
|  | mount -t ext4 -o loop $1 $STAGING_DIR | 
|  | mkdir -p $STAGING_DIR/$DEST | 
|  |  | 
|  | # Create a stack user that is a member of the libvirtd group so that stack | 
|  | # is able to interact with libvirt. | 
|  | chroot $STAGING_DIR groupadd libvirtd || true | 
|  | chroot $STAGING_DIR useradd stack -s /bin/bash -d $DEST -G libvirtd || true | 
|  |  | 
|  | # Add a simple password - pass | 
|  | echo stack:pass | chroot $STAGING_DIR chpasswd | 
|  |  | 
|  | # Configure sudo | 
|  | ( umask 226 && echo "stack ALL=(ALL) NOPASSWD:ALL" \ | 
|  | > $STAGING_DIR/etc/sudoers.d/50_stack_sh ) | 
|  |  | 
|  | # Copy over your ssh keys and env if desired | 
|  | cp_it ~/.ssh $STAGING_DIR/$DEST/.ssh | 
|  | cp_it ~/.ssh/id_rsa.pub $STAGING_DIR/$DEST/.ssh/authorized_keys | 
|  | cp_it ~/.gitconfig $STAGING_DIR/$DEST/.gitconfig | 
|  | cp_it ~/.vimrc $STAGING_DIR/$DEST/.vimrc | 
|  | cp_it ~/.bashrc $STAGING_DIR/$DEST/.bashrc | 
|  |  | 
|  | # Copy devstack | 
|  | rm -rf $STAGING_DIR/$DEST/devstack | 
|  | cp_it . $STAGING_DIR/$DEST/devstack | 
|  |  | 
|  | # Give stack ownership over $DEST so it may do the work needed | 
|  | chroot $STAGING_DIR chown -R stack $DEST | 
|  |  | 
|  | # Unmount | 
|  | umount $STAGING_DIR |