nova/contrib/openstack-config

66 lines
1.4 KiB
Bash
Executable File

#!/bin/sh -e
### BEGIN INIT INFO
# Provides: openstack
# Required-Start: mountkernfs $local_fs
# Required-Stop: $local_fs
# X-Start-Before: networking
# Should-Start:
# Default-Start: S
# Default-Stop:
# Short-Description: Apply configuration from OpenStack Config Drive
### END INIT INFO
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
. /lib/lsb/init-functions
copy_cloud_config() {
LABEL="config"
if [ ! -e /dev/disk/by-label/${LABEL} ]; then
log_warning_msg "OpenStack Cloud Config drive not found"
return 1
fi
MNT=/tmp/config
mkdir -p ${MNT}
mount /dev/disk/by-label/${LABEL} ${MNT}
if [ -e ${MNT}/root/.ssh/authorized_keys ]; then
mkdir -m 700 -p /root/.ssh/
cp ${MNT}/root/.ssh/authorized_keys /root/.ssh/
chmod 600 ${MNT}/root/.ssh/authorized_keys
fi
if [ -e ${MNT}/etc/network/interfaces ]; then
cp ${MNT}/etc/network/interfaces /etc/network/
chmod 644 /etc/network/interfaces
fi
umount ${MNT}
return 0
}
case "$1" in
start|"")
log_action_begin_msg "Applying OpenStack Cloud Config"
if copy_cloud_config; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
restart|reload|force-reload|status)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
*)
echo "Usage: openstack.sh [start|stop]" >&2
exit 3
;;
esac
: