diff options
author | Soren Hansen <soren@canonical.com> | 2009-06-27 20:03:01 +0200 |
---|---|---|
committer | Soren Hansen <soren@canonical.com> | 2009-06-27 20:03:01 +0200 |
commit | dd38fbcbb5b8489bd90d2bde3ce13599701f1e13 (patch) | |
tree | dbe957c0cce804492580333043fb552c1e5872da /debian | |
parent | 07a9ad9831f34edd2c6df934390f8840d7d99940 (diff) | |
download | vyos-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/init | 185 |
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 |