summaryrefslogtreecommitdiff
path: root/ec2-init
diff options
context:
space:
mode:
Diffstat (limited to 'ec2-init')
-rwxr-xr-xec2-init143
1 files changed, 143 insertions, 0 deletions
diff --git a/ec2-init b/ec2-init
new file mode 100755
index 00000000..b2995b79
--- /dev/null
+++ b/ec2-init
@@ -0,0 +1,143 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: ec2-init
+# Required-Start: $network $local_fs $ssh
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: S
+# Default-Stop: 1
+# Short-Description: Initialises system for use on Amazon EC2
+# Description: Fetches login credentials and handles various quirks
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+NAME=ec2-init
+
+. /lib/lsb/init-functions
+
+if [ ! -d /var/ec2 ]; then
+ mkdir /var/ec2
+fi
+
+run_once() {
+ per_id=$1
+ action_id=$2
+
+ semaphore="/var/lib/ec2/$action_id.$per_id"
+
+ if ! [ -e "$semaphore" ]
+ then
+ touch "$semaphore"
+ return 0
+ fi
+ return 1
+}
+
+run_once_per_instance() {
+ action_id=$1
+ instance=`ec2-get-info --instance-id | cut -f2 -d\ `
+ run_once $instance $action_id
+}
+
+run_once_per_ami() {
+ action_id=$1
+ ami=`ec2-get-info --ami-id | cut -f2 -d\ `
+ run_once $ami $action_id
+}
+
+run_once_ever() {
+ action_id=$1
+ run_once ever $action_id
+}
+
+regenerate_ssh_host_keys() {
+ rm -f /etc/ssh/ssh_host_*_key*
+
+ ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N '' | logger -s -t "ec2"
+ ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N '' | logger -s -t "ec2"
+
+ # This allows user to get host keys securely through console log
+ echo | logger -s -t "ec2"
+ echo | logger -s -t "ec2"
+ echo "#############################################################" | logger -s -t "ec2"
+ echo "-----BEGIN SSH HOST KEY FINGERPRINTS-----" | logger -s -t "ec2"
+ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub | logger -s -t "ec2"
+ ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub | logger -s -t "ec2"
+ echo "-----END SSH HOST KEY FINGERPRINTS-----" | logger -s -t "ec2"
+ echo "#############################################################" | logger -s -t "ec2"
+}
+
+case "$1" in
+ start)
+ log_daemon_msg "Waiting for EC2 meta-data service"
+ if ec2-wait-for-meta-data-service
+ then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ exit 1
+ fi
+
+ if run_once_per_ami ssh_host_key_regeneration
+ then
+ regenerate_ssh_host_keys
+ fi
+
+ update-motd
+
+ if run_once_ever ec2-defaults
+ then
+ log_daemon_msg "Setting EC2 defaults"
+ if ec2-set-defaults 2> /dev/null
+ then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ fi
+
+ if run_once_ever ssh_authorized_keys
+ then
+ log_daemon_msg "Fetching EC2 SSH keys"
+ if ec2-fetch-credentials 2> /dev/null
+ then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ fi
+
+ log_daemon_msg "Setting hostname to EC2 localhostname"
+ if ec2-set-hostname 2> /dev/null
+ then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+
+ if run_once_per_instance user-data
+ then
+ log_daemon_msg "Running EC2 user data"
+ if ec2-run-user-data 2>&1 | logger -t "user-data"
+ then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ fi
+ ;;
+ stop)
+ exit 0
+ ;;
+ restart|force-reload)
+ exec $0 start
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0