xref: /netbsd-src/distrib/utils/embedded/files/ec2_init (revision fc920d3dcf68c94e6102496b5cf61378ea73a94e)
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
11name="ec2_init"
12rcvar=${name}
13start_cmd="ec2_init"
14stop_cmd=":"
15
16EC2_USER="ec2-user"
17METADATA_URL="http://169.254.169.254/latest/meta-data/"
18SSH_KEY_URL="public-keys/0/openssh-key"
19HOSTNAME_URL="hostname"
20
21SSH_KEY_FILE="/home/${EC2_USER}/.ssh/authorized_keys"
22
23ec2_newuser()
24{
25	echo "Creating EC2 user account ${EC2_USER}"
26	useradd -g users -G wheel,operator -m "${EC2_USER}"
27}
28
29ec2_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
64load_rc_config $name
65run_rc_command "$1"
66