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