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