Home | History | Annotate | Line # | Download | only in files
ec2_init revision 1.1
      1 #!/bin/sh
      2 #
      3 # $NetBSD: ec2_init,v 1.1 2018/11/30 20:53:02 jmcneill Exp $
      4 #
      5 # PROVIDE: ec2_init
      6 # REQUIRE: NETWORKING
      7 # BEFORE:  LOGIN
      8 
      9 $_rc_subr_loaded . /etc/rc.subr
     10 
     11 name="ec2_init"
     12 rcvar=${name}
     13 start_cmd="ec2_init"
     14 stop_cmd=":"
     15 
     16 METADATA_URL="http://169.254.169.254/latest/meta-data/"
     17 SSH_KEY_URL="public-keys/0/openssh-key"
     18 HOSTNAME_URL="hostname"
     19 
     20 SSH_KEY_FILE="/root/.ssh/authorized_keys"
     21 
     22 ec2_init()
     23 {
     24 	(
     25 	umask 022
     26 	# fetch the key pair from Amazon Web Services
     27 	EC2_SSH_KEY=$(ftp -o - "${METADATA_URL}${SSH_KEY_URL}")
     28 
     29 	if [ -n "$EC2_SSH_KEY" ]; then
     30 		# A key pair is associated with this instance, add it
     31 		# to root 'authorized_keys' file
     32 		mkdir -p $(dirname "$SSH_KEY_FILE")
     33 		touch "$SSH_KEY_FILE"
     34 		cd $(dirname "$SSH_KEY_FILE")
     35 
     36 		grep -q "$EC2_SSH_KEY" "$SSH_KEY_FILE"
     37 		if [ $? -ne 0 ]; then
     38 			echo "Setting EC2 SSH key pair: ${EC2_SSH_KEY##* }"
     39 			echo "$EC2_SSH_KEY" >> "$SSH_KEY_FILE"
     40 		fi
     41 	fi
     42 
     43 	# set hostname
     44 	HOSTNAME=$(ftp -o - "${METADATA_URL}${HOSTNAME_URL}")
     45 	echo "Setting EC2 hostname: ${HOSTNAME}"
     46 	echo "$HOSTNAME" > /etc/myname
     47 	hostname "$HOSTNAME"
     48 	)
     49 }
     50 
     51 load_rc_config $name
     52 run_rc_command "$1"
     53