From 92dcbe24ef3cbbcdd961f155b3af6bb7623665a8 Mon Sep 17 00:00:00 2001 From: Jake Buchholz Date: Tue, 30 Apr 2019 21:56:48 -0700 Subject: build profiles - feature complete * setup-ami.sh + fix partitioning + proper path to grub-install + don't forget to umount /boot/efi during cleanup * version/edge - newer kernel trusts CPU for entropy, don't need haveged anmore * test.conf + reduce ami_regions to just us-west-2 + entropy stuff moved to version/edge + adds edge-aarch64 build (though AMI's arch isn't set properly - https://github.com/hashicorp/packer/issues/7358 * alpine-amis.conf - prepend 'r' to revision number --- profiles/alpine-amis.conf | 2 +- profiles/test.conf | 23 ++++++++--------------- profiles/version/edge | 5 ++++- scripts/setup-ami.sh | 15 +++++++++++---- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/profiles/alpine-amis.conf b/profiles/alpine-amis.conf index f5db1b7..a6b9926 100644 --- a/profiles/alpine-amis.conf +++ b/profiles/alpine-amis.conf @@ -5,7 +5,7 @@ arch-x86_64 { include "arch/x86_64" } # profile vars alpine-amis { - revision = "1" + revision = "r1" build_region = "us-west-2" build_subnet = "subnet-b80c36e2" ami_access { diff --git a/profiles/test.conf b/profiles/test.conf index eeec6a5..01d38d6 100644 --- a/profiles/test.conf +++ b/profiles/test.conf @@ -3,13 +3,13 @@ version-current { include "version/current" } version-edge { include "version/edge" } arch-x86_64 { include "arch/x86_64" } +arch-aarch64 { include "arch/aarch64" } # specific to this profile's builds test { build_region = "us-west-2" build_subnet = "subnet-033a30d7b5220d177" ami_regions { - us-east-1 = true us-west-2 = true } } @@ -21,19 +21,12 @@ builds { revision = "test" } - # merge version, arch, profile, and build vars - edge-x86_64 = ${version-edge} ${arch-x86_64} ${test} { - ami_regions { - us-east-1 = false - } - # try rng-tools instead of haveged - pkgs { - haveged = false - rng-tools = true - } - svcs { - haveged = false - rngd = "boot" - } + # merge version, arch, and profile vars (no build-specific vars) + edge-x86_64 = ${version-edge} ${arch-x86_64} ${test} + + ### NOTE: aarch64 builds, but won't be launchable, see... + ### https://github.com/hashicorp/packer/issues/7358 + edge-aarch64 = ${version-edge} ${arch-aarch64} ${test} { + build_subnet = "subnet-08dfc622745f7d96a" # other subnet doesn't do a1.* instances } } diff --git a/profiles/version/edge b/profiles/version/edge index 371e7e4..13195fe 100644 --- a/profiles/version/edge +++ b/profiles/version/edge @@ -9,9 +9,12 @@ release = "edge" end_of_life = "@TODAY@" revision = "@NOW@" -repos = null # undo "current" repos +repos = null # reset hash from 'current' repos { "http://dl-cdn.alpinelinux.org/alpine/edge/main": true "http://dl-cdn.alpinelinux.org/alpine/edge/community": true "http://dl-cdn.alpinelinux.org/alpine/edge/testing": true } +# haveged/rngd no longer needed with Alpine kernels >= 4.19.36 +pkgs { haveged = false } +svcs { haveged = false } diff --git a/scripts/setup-ami.sh b/scripts/setup-ami.sh index 72157a5..2c0a1a6 100755 --- a/scripts/setup-ami.sh +++ b/scripts/setup-ami.sh @@ -72,10 +72,15 @@ setup_partitions() { *) echo "$start,$line"; start= ;; esac done - ) | sfdisk --quiet --label $DISKLABEL $diskdev + ) | sfdisk --quiet --label dos $diskdev - # create device nodes if not exist - mdev -s + # we assume that the build host will create the new devices within 5s + local tries=5 + while [ ! -e "${diskdev}1" ]; do + [ $tries -eq 0 ] && break || sleep 1 + tries=$(( $tries - 1 )) + done + [ -e "${diskdev}1" ] || die "Expected new device ${diskdev}1 not created" } make_filesystem() { @@ -227,7 +232,7 @@ install_grub_efi() { #mkdir -p "$target"/boot/efi # disable nvram so grub doesn't call efibootmgr - chroot "$target" /sbin/grub-install --target=$grub_target --efi-directory=/boot/efi \ + chroot "$target" /usr/sbin/grub-install --target=$grub_target --efi-directory=/boot/efi \ --bootloader-id=alpine --boot-directory=/boot --no-nvram # fallback mode @@ -325,6 +330,8 @@ cleanup() { "$target"/root/.ash_history \ "$target"/etc/*- + [ "$BOOTLOADER" = 'grub-efi' ] && umount "$target"/boot/efi + umount \ "$target"/dev \ "$target"/proc \ -- cgit v1.2.3