d7326d2ea9
Change-Id: I5c156879f3c85f1555a1411695ac43cefbbf3b99
73 lines
1.7 KiB
Bash
Executable File
73 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# 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`
|
|
|
|
# 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 )
|
|
|
|
# Gracefully cp only if source file/dir exists
|
|
function cp_it {
|
|
if [ -e $1 ] || [ -d $1 ]; then
|
|
cp -pRL $1 $2
|
|
fi
|
|
}
|
|
|
|
# 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
|