From 036bb8c62ba0574a0a666e073d6ed55ef47265b9 Mon Sep 17 00:00:00 2001 From: Peter Rifel Date: Thu, 16 Mar 2023 18:03:31 -0500 Subject: [PATCH] Initial Amazon Linux 2023 support This is untested, I'll add an e2e job once this merges --- util/pkg/distributions/distributions.go | 31 ++++++++++--------- util/pkg/distributions/identify.go | 2 ++ util/pkg/distributions/identify_test.go | 5 +++ .../tests/amazonlinux2023/etc/os-release | 12 +++++++ 4 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 util/pkg/distributions/tests/amazonlinux2023/etc/os-release diff --git a/util/pkg/distributions/distributions.go b/util/pkg/distributions/distributions.go index 56c82bf47c..8cc90ace9f 100644 --- a/util/pkg/distributions/distributions.go +++ b/util/pkg/distributions/distributions.go @@ -37,20 +37,21 @@ type Distribution struct { } var ( - DistributionDebian10 = Distribution{packageFormat: "deb", project: "debian", id: "buster", version: 10} - DistributionDebian11 = Distribution{packageFormat: "deb", project: "debian", id: "bullseye", version: 11} - DistributionDebian12 = Distribution{packageFormat: "deb", project: "debian", id: "bookworm", version: 12} - DistributionUbuntu1804 = Distribution{packageFormat: "deb", project: "ubuntu", id: "bionic", version: 18.04} - DistributionUbuntu2004 = Distribution{packageFormat: "deb", project: "ubuntu", id: "focal", version: 20.04} - DistributionUbuntu2010 = Distribution{packageFormat: "deb", project: "ubuntu", id: "groovy", version: 20.10} - DistributionUbuntu2104 = Distribution{packageFormat: "deb", project: "ubuntu", id: "hirsute", version: 21.04} - DistributionUbuntu2110 = Distribution{packageFormat: "deb", project: "ubuntu", id: "impish", version: 21.10} - DistributionUbuntu2204 = Distribution{packageFormat: "deb", project: "ubuntu", id: "jammy", version: 22.04} - DistributionAmazonLinux2 = Distribution{packageFormat: "rpm", project: "amazonlinux2", id: "amazonlinux2", version: 0} - DistributionRhel8 = Distribution{packageFormat: "rpm", project: "rhel", id: "rhel8", version: 8} - DistributionRocky8 = Distribution{packageFormat: "rpm", project: "rocky", id: "rocky8", version: 8} - DistributionFlatcar = Distribution{packageFormat: "", project: "flatcar", id: "flatcar", version: 0} - DistributionContainerOS = Distribution{packageFormat: "", project: "containeros", id: "containeros", version: 0} + DistributionDebian10 = Distribution{packageFormat: "deb", project: "debian", id: "buster", version: 10} + DistributionDebian11 = Distribution{packageFormat: "deb", project: "debian", id: "bullseye", version: 11} + DistributionDebian12 = Distribution{packageFormat: "deb", project: "debian", id: "bookworm", version: 12} + DistributionUbuntu1804 = Distribution{packageFormat: "deb", project: "ubuntu", id: "bionic", version: 18.04} + DistributionUbuntu2004 = Distribution{packageFormat: "deb", project: "ubuntu", id: "focal", version: 20.04} + DistributionUbuntu2010 = Distribution{packageFormat: "deb", project: "ubuntu", id: "groovy", version: 20.10} + DistributionUbuntu2104 = Distribution{packageFormat: "deb", project: "ubuntu", id: "hirsute", version: 21.04} + DistributionUbuntu2110 = Distribution{packageFormat: "deb", project: "ubuntu", id: "impish", version: 21.10} + DistributionUbuntu2204 = Distribution{packageFormat: "deb", project: "ubuntu", id: "jammy", version: 22.04} + DistributionAmazonLinux2 = Distribution{packageFormat: "rpm", project: "amazonlinux2", id: "amazonlinux2", version: 0} + DistributionAmazonLinux2023 = Distribution{packageFormat: "rpm", project: "amazonlinux2023", id: "amzn", version: 2023} + DistributionRhel8 = Distribution{packageFormat: "rpm", project: "rhel", id: "rhel8", version: 8} + DistributionRocky8 = Distribution{packageFormat: "rpm", project: "rocky", id: "rocky8", version: 8} + DistributionFlatcar = Distribution{packageFormat: "", project: "flatcar", id: "flatcar", version: 0} + DistributionContainerOS = Distribution{packageFormat: "", project: "containeros", id: "containeros", version: 0} ) // IsDebianFamily returns true if this distribution uses deb packages and generally follows debian package names @@ -82,7 +83,7 @@ func (d *Distribution) DefaultUsers() ([]string, error) { return []string{"ubuntu", "root"}, nil case "centos": return []string{"centos"}, nil - case "rhel", "amazonlinux2": + case "rhel", "amazonlinux2", "amazonlinux2023": return []string{"ec2-user"}, nil case "rocky": return []string{"rocky"}, nil diff --git a/util/pkg/distributions/identify.go b/util/pkg/distributions/identify.go index 0ab13b43ee..780ef12687 100644 --- a/util/pkg/distributions/identify.go +++ b/util/pkg/distributions/identify.go @@ -50,6 +50,8 @@ func FindDistribution(rootfs string) (Distribution, error) { switch distro { case "amzn-2": return DistributionAmazonLinux2, nil + case "amzn-2023": + return DistributionAmazonLinux2023, nil case "debian-10": return DistributionDebian10, nil case "debian-11": diff --git a/util/pkg/distributions/identify_test.go b/util/pkg/distributions/identify_test.go index 10c4a9bba0..ffcb853f42 100644 --- a/util/pkg/distributions/identify_test.go +++ b/util/pkg/distributions/identify_test.go @@ -34,6 +34,11 @@ func TestFindDistribution(t *testing.T) { err: nil, expected: DistributionAmazonLinux2, }, + { + rootfs: "amazonlinux2023", + err: nil, + expected: DistributionAmazonLinux2023, + }, { rootfs: "centos7", err: fmt.Errorf("unsupported distro: centos-7"), diff --git a/util/pkg/distributions/tests/amazonlinux2023/etc/os-release b/util/pkg/distributions/tests/amazonlinux2023/etc/os-release new file mode 100644 index 0000000000..4a18876266 --- /dev/null +++ b/util/pkg/distributions/tests/amazonlinux2023/etc/os-release @@ -0,0 +1,12 @@ +NAME="Amazon Linux" +VERSION="2023" +ID="amzn" +ID_LIKE="fedora" +VERSION_ID="2023" +PLATFORM_ID="platform:al2023" +PRETTY_NAME="Amazon Linux 2023" +ANSI_COLOR="0;33" +CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023" +HOME_URL="https://aws.amazon.com/linux/" +BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023" +SUPPORT_END="2028-03-01" \ No newline at end of file