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