Module Name: src Committed By: jmcneill Date: Sat Oct 15 18:32:31 UTC 2022
Modified Files: src/distrib/utils/embedded/conf: arm64.conf evbarm.conf src/distrib/utils/embedded/files: ec2_init Log Message: ec2_init: Add support for Oracle Cloud To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/distrib/utils/embedded/conf/arm64.conf cvs rdiff -u -r1.39 -r1.40 src/distrib/utils/embedded/conf/evbarm.conf cvs rdiff -u -r1.4 -r1.5 src/distrib/utils/embedded/files/ec2_init Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/utils/embedded/conf/arm64.conf diff -u src/distrib/utils/embedded/conf/arm64.conf:1.14 src/distrib/utils/embedded/conf/arm64.conf:1.15 --- src/distrib/utils/embedded/conf/arm64.conf:1.14 Sat Oct 16 14:05:48 2021 +++ src/distrib/utils/embedded/conf/arm64.conf Sat Oct 15 18:32:30 2022 @@ -1,4 +1,4 @@ -# $NetBSD: arm64.conf,v 1.14 2021/10/16 14:05:48 jmcneill Exp $ +# $NetBSD: arm64.conf,v 1.15 2022/10/15 18:32:30 jmcneill Exp $ # ARM64 customization script used by mkimage # board=arm64 @@ -28,7 +28,7 @@ customize() { mdnsd=YES devpubd=YES wscons=\$(dev_exists wsdisplay0) -ec2_init=\$(dev_exists ena0) +ec2_init=\$(is_cloud) if checkyesno ec2_init ; then dhcpcd_flags="\$dhcpcd_flags -w" else Index: src/distrib/utils/embedded/conf/evbarm.conf diff -u src/distrib/utils/embedded/conf/evbarm.conf:1.39 src/distrib/utils/embedded/conf/evbarm.conf:1.40 --- src/distrib/utils/embedded/conf/evbarm.conf:1.39 Tue Jul 6 11:49:36 2021 +++ src/distrib/utils/embedded/conf/evbarm.conf Sat Oct 15 18:32:30 2022 @@ -1,4 +1,4 @@ -# $NetBSD: evbarm.conf,v 1.39 2021/07/06 11:49:36 jmcneill Exp $ +# $NetBSD: evbarm.conf,v 1.40 2022/10/15 18:32:30 jmcneill Exp $ # evbarm shared config # image=$HOME/${board}.img @@ -145,6 +145,24 @@ dev_exists() { fi } +is_cloud() { + ret=NO + + # AWS EC2 + if [ "\$(dev_exists ena0)" = "YES" ]; then + ret=YES + fi + + # Oracle OCI + case "\$(/sbin/sysctl -n machdep.dmi.chassis-asset-tag)" in + OracleCloud*) + ret=YES + ;; + esac + + printf \$ret +} + rc_configured=YES hostname=${hostname:-${board}} no_swap=YES Index: src/distrib/utils/embedded/files/ec2_init diff -u src/distrib/utils/embedded/files/ec2_init:1.4 src/distrib/utils/embedded/files/ec2_init:1.5 --- src/distrib/utils/embedded/files/ec2_init:1.4 Tue Jul 20 19:31:23 2021 +++ src/distrib/utils/embedded/files/ec2_init Sat Oct 15 18:32:30 2022 @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: ec2_init,v 1.4 2021/07/20 19:31:23 rhialto Exp $ +# $NetBSD: ec2_init,v 1.5 2022/10/15 18:32:30 jmcneill Exp $ # # PROVIDE: ec2_init # REQUIRE: NETWORKING @@ -13,9 +13,27 @@ rcvar=${name} start_cmd="ec2_init" stop_cmd=":" -EC2_USER="ec2-user" -METADATA_URL="http://169.254.169.254/latest/meta-data/" -SSH_KEY_URL="public-keys/0/openssh-key" +CLOUD_TYPE=EC2 # default + +case "$(/sbin/sysctl -n machdep.dmi.chassis-asset-tag)" in +OracleCloud*) + CLOUD_TYPE=OCI + ;; +esac + +case ${CLOUD_TYPE} in +EC2) + EC2_USER="ec2-user" + METADATA_URL="http://169.254.169.254/latest/meta-data/" + SSH_KEY_URL="public-keys/0/openssh-key" + ;; +OCI) + EC2_USER="opc" + METADATA_URL="http://169.254.169.254/opc/v1/instance/" + SSH_KEY_URL="metadata/ssh_authorized_keys" + ;; +esac + HOSTNAME_URL="hostname" SSH_KEY_FILE="/home/${EC2_USER}/.ssh/authorized_keys" @@ -24,7 +42,7 @@ OS_METADATA_URL="http://169.254.169.254/ ec2_newuser() { - echo "Creating EC2 user account ${EC2_USER}" + echo "Creating ${CLOUD_TYPE} user account ${EC2_USER}" useradd -g users -G wheel,operator -m "${EC2_USER}" } @@ -39,25 +57,25 @@ ec2_init() umask 022 # set hostname; it may be 5-10 seconds for the metadata service - # to become reachable. + # to become reachable. try=0 while [ $((try++)) -lt 20 ] do HOSTNAME=$(ftp -o - -q 2 "${METADATA_URL}${HOSTNAME_URL}") if [ -n "$HOSTNAME" ]; then - echo "Setting EC2 hostname: ${HOSTNAME}" + echo "Setting ${CLOUD_TYPE} hostname: ${HOSTNAME}" echo "$HOSTNAME" > /etc/myname hostname "$HOSTNAME" break fi - echo "EC2 hostname not available yet (try $try)" + echo "${CLOUD_TYPE} hostname not available yet (try $try)" sleep 1 done - # create EC2 user + # create cloud user id "${EC2_USER}" >/dev/null 2>&1 || ec2_newuser - # fetch the public key from Amazon Web Services + # fetch the public key from the metadata service EC2_SSH_KEY=$(ftp -o - -q 2 "${METADATA_URL}${SSH_KEY_URL}") if [ -n "$EC2_SSH_KEY" ]; then @@ -71,7 +89,7 @@ ec2_init() grep -q "$EC2_SSH_KEY" "$SSH_KEY_FILE" if [ $? -ne 0 ]; then - echo "Setting EC2 SSH public key for user ${EC2_USER}: ${EC2_SSH_KEY##* }" + echo "Setting ${CLOUD_TYPE} SSH public key for user ${EC2_USER}: ${EC2_SSH_KEY##* }" echo "$EC2_SSH_KEY" >> "$SSH_KEY_FILE" fi fi