Home | History | Annotate | Line # | Download | only in files
ec2_init revision 1.2
      1 #!/bin/sh
      2 #
      3 # $NetBSD: ec2_init,v 1.2 2021/07/01 18:05:45 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 EC2_USER="ec2-user"
     17 METADATA_URL="http://169.254.169.254/latest/meta-data/"
     18 SSH_KEY_URL="public-keys/0/openssh-key"
     19 HOSTNAME_URL="hostname"
     20 
     21 SSH_KEY_FILE="/home/${EC2_USER}/.ssh/authorized_keys"
     22 
     23 ec2_newuser()
     24 {
     25 	echo "Creating EC2 user account ${EC2_USER}"
     26 	useradd -g users -G wheel,operator -m "${EC2_USER}"
     27 }
     28 
     29 ec2_init()
     30 {
     31 	(
     32 	umask 022
     33 
     34 	# create EC2 user
     35 	id "${EC2_USER}" >/dev/null 2>&1 || ec2_newuser
     36 
     37 	# fetch the key pair from Amazon Web Services
     38 	EC2_SSH_KEY=$(ftp -o - "${METADATA_URL}${SSH_KEY_URL}")
     39 
     40 	if [ -n "$EC2_SSH_KEY" ]; then
     41 		# A key pair is associated with this instance, add it
     42 		# to EC2_USER's 'authorized_keys' file
     43 		mkdir -p $(dirname "$SSH_KEY_FILE")
     44 		chown "${EC2_USER}:users" $(dirname "$SSH_KEY_FILE")
     45 		touch "$SSH_KEY_FILE"
     46 		chown "${EC2_USER}:users" "$SSH_KEY_FILE"
     47 		cd $(dirname "$SSH_KEY_FILE")
     48 
     49 		grep -q "$EC2_SSH_KEY" "$SSH_KEY_FILE"
     50 		if [ $? -ne 0 ]; then
     51 			echo "Setting EC2 SSH key pair: ${EC2_SSH_KEY##* }"
     52 			echo "$EC2_SSH_KEY" >> "$SSH_KEY_FILE"
     53 		fi
     54 	fi
     55 
     56 	# set hostname
     57 	HOSTNAME=$(ftp -o - "${METADATA_URL}${HOSTNAME_URL}")
     58 	echo "Setting EC2 hostname: ${HOSTNAME}"
     59 	echo "$HOSTNAME" > /etc/myname
     60 	hostname "$HOSTNAME"
     61 	)
     62 }
     63 
     64 load_rc_config $name
     65 run_rc_command "$1"
     66