aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Percival <cperciva@FreeBSD.org>2023-09-09 00:55:16 +0000
committerColin Percival <cperciva@FreeBSD.org>2023-10-03 17:28:18 +0000
commitd9243c1ab3cd8e744aaf54177232cdbffa07392d (patch)
tree8b960a890c3cad0e18a5590d43e2772af9fa1bc1
parentf4576ea0d5bcc26d8ffdf033cab36c651a5f0885 (diff)
downloadsrc-d9243c1ab3cd8e744aaf54177232cdbffa07392d.tar.gz
src-d9243c1ab3cd8e744aaf54177232cdbffa07392d.zip
EC2: Add experimental cloud-init images
Known issues: 1. The ec2-user user is created with a homedir of /usr/home/ec2-user instead of /home/ec2-user; this appears to be a bug in cloud-init's FreeBSD support. 2. Cloud-init configures IPv4 networking but not IPv6 networking. releng/14.0 candidate. Discussed with: gjb Reviewed by: imp MFC after: 5 days Relnotes: yes Sponsored by: https://www.patreon.com/cperciva Differential Revision: https://reviews.freebsd.org/D41793 (cherry picked from commit 1f4ce7a39f0f4b0621ff55d228014ccddb366d37)
-rw-r--r--release/Makefile.vm5
-rw-r--r--release/tools/ec2-cloud-init.conf31
2 files changed, 34 insertions, 2 deletions
diff --git a/release/Makefile.vm b/release/Makefile.vm
index 8828b99599e7..09e31e3c0b6f 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -30,8 +30,9 @@ BASIC-CI_FSLIST= ufs
BASIC-CI_DESC= Image for CI
EC2_FORMAT= raw
EC2_FSLIST= ufs zfs
-EC2_DESC= Amazon EC2 image
-EC2_FLAVOURS= BASE
+EC2_FLAVOURS= BASE CLOUD-INIT
+EC2-BASE_DESC= Amazon EC2 image
+EC2-CLOUD-INIT_DESC= Amazon EC2 Cloud-Init image
GCE_FORMAT= raw
GCE_FSLIST= ufs
GCE_DESC= Google Compute Engine image
diff --git a/release/tools/ec2-cloud-init.conf b/release/tools/ec2-cloud-init.conf
new file mode 100644
index 000000000000..2dd4df390fa3
--- /dev/null
+++ b/release/tools/ec2-cloud-init.conf
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. ${WORLDDIR}/release/tools/ec2.conf
+
+# Packages to install into the image we're creating. In addition to packages
+# present on all EC2 AMIs, we install cloud-init.
+export VM_EXTRA_PACKAGES="${VM_EXTRA_PACKAGES} net/cloud-init"
+
+# Services to enable in rc.conf(5).
+export VM_RC_LIST="${VM_RC_LIST} cloudinit sshd"
+
+vm_extra_pre_umount() {
+ # Configuration common to all EC2 AMIs
+ ec2_common
+
+ # Configure cloud-init
+ cat <<-'EOF' > ${DESTDIR}/usr/local/etc/cloud/cloud.cfg.d/98_ec2.cfg
+ disable_root: true
+ system_info:
+ distro: freebsd
+ default_user:
+ name: ec2-user
+ lock_passwd: True
+ groups: [wheel]
+ shell: /bin/sh
+ # Currently broken, cloud-init hard-codes to /usr/home/*
+ homedir: /home/ec2-user
+ EOF
+
+ return 0
+}