summaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorSoren Hansen <soren@canonical.com>2009-06-27 20:03:01 +0200
committerSoren Hansen <soren@canonical.com>2009-06-27 20:03:01 +0200
commitdd38fbcbb5b8489bd90d2bde3ce13599701f1e13 (patch)
treedbe957c0cce804492580333043fb552c1e5872da /debian
parent07a9ad9831f34edd2c6df934390f8840d7d99940 (diff)
downloadvyos-cloud-init-dd38fbcbb5b8489bd90d2bde3ce13599701f1e13.tar.gz
vyos-cloud-init-dd38fbcbb5b8489bd90d2bde3ce13599701f1e13.zip
Add the "run_once" handling to the init script.
Unify init script indentation style.
Diffstat (limited to 'debian')
-rw-r--r--debian/init185
1 files changed, 113 insertions, 72 deletions
diff --git a/debian/init b/debian/init
index 0f0c3767..2fc4b822 100644
--- a/debian/init
+++ b/debian/init
@@ -17,87 +17,128 @@ NAME=ec2-init
. /lib/lsb/init-functions
if [ ! -d /var/ec2 ]; then
- mkdir /var/ec2
+ mkdir /var/ec2
fi
-first_boot() {
- # check to see if we are booting for the first time
- if [ ! -f /var/ec2/.first-boot ]; then
- log_daemon_msg "Running EC2 first boot"
- 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"
- /usr/sbin/update-motd
- touch /var/ec2/.first-boot
- else
- log_daemon_msg "Running update-motd"
- /usr/sbin/update-motd
+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-data --instance-id | cut -f2 -d\ `
+ run_once $instance $action_id
+}
+
+run_once_per_ami() {
+ action_id=$1
+ ami=`ec2-get-data --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)
- first_boot
- log_daemon_msg "Setting EC2 defaults"
- if ec2-set-defaults 2> /dev/null
- then
- log_end_msg 0
- else
- log_end_msg 1
- fi
-
- 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
-
- 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
- log_daemon_msg "Creating /etc/apt/sources.list"
- if ec2-set-apt-sources 2> /dev/null
- then
- log_end_msg 0
- else
- log_end_msg 1
- fi
- 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
+ start)
+ 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
- ;;
- stop)
+ 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_ever apt_source_list
+ then
+ log_daemon_msg "Creating /etc/apt/sources.list"
+ if ec2-set-apt-sources 2> /dev/null
+ then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ 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
- ;;
+ 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