f4bf828775
Configuration with DHCP & cloud-init can be painful. The config_drive is great, and it avoids disk injection, but there's no example of how to use it. So here's a little example init.d script for contrib, and a code patch to make sure the config drive gets a nice volume label. Change-Id: I22a1d6a824856ca9651b435d0fe54e348ab107fe
66 lines
1.4 KiB
Bash
Executable File
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
|
|
|
|
:
|