diff --git a/nodeup/pkg/model/kubectl.go b/nodeup/pkg/model/kubectl.go index cadec02381..3ded21fae4 100644 --- a/nodeup/pkg/model/kubectl.go +++ b/nodeup/pkg/model/kubectl.go @@ -108,7 +108,7 @@ func (b *KubectlBuilder) findKubeconfigUser() (*fi.User, *fi.Group, error) { switch b.Distribution { case distributions.DistributionDebian9, distributions.DistributionDebian10: users = []string{"admin", "root"} - case distributions.DistributionUbuntu1604, distributions.DistributionUbuntu1804, distributions.DistributionUbuntu2004: + case distributions.DistributionUbuntu1604, distributions.DistributionUbuntu1804, distributions.DistributionUbuntu2004, distributions.DistributionUbuntu2010: users = []string{"ubuntu"} case distributions.DistributionCentos7, distributions.DistributionCentos8: users = []string{"centos"} diff --git a/nodeup/pkg/model/kubelet.go b/nodeup/pkg/model/kubelet.go index 09abae9281..71e5cc3625 100644 --- a/nodeup/pkg/model/kubelet.go +++ b/nodeup/pkg/model/kubelet.go @@ -513,7 +513,8 @@ func (b *KubeletBuilder) buildKubeletConfigSpec() (*kops.KubeletConfigSpec, erro // In certain configurations systemd-resolved will put the loopback address 127.0.0.53 as a nameserver into /etc/resolv.conf // https://github.com/coredns/coredns/blob/master/plugin/loop/README.md#troubleshooting-loops-in-kubernetes-clusters if c.ResolverConfig == nil { - if b.Distribution == distributions.DistributionUbuntu1804 || b.Distribution == distributions.DistributionUbuntu2004 { + switch b.Distribution { + case distributions.DistributionUbuntu1804, distributions.DistributionUbuntu2004, distributions.DistributionUbuntu2010: c.ResolverConfig = s("/run/systemd/resolve/resolv.conf") } } diff --git a/nodeup/pkg/model/miscutils.go b/nodeup/pkg/model/miscutils.go index ae4eed0b1e..a59731046c 100644 --- a/nodeup/pkg/model/miscutils.go +++ b/nodeup/pkg/model/miscutils.go @@ -48,8 +48,15 @@ func (b *MiscUtilsBuilder) Build(c *fi.ModelBuilderContext) error { packages = append(packages, "curl") packages = append(packages, "wget") packages = append(packages, "perl") - packages = append(packages, "python-apt") packages = append(packages, "apt-transport-https") + + // TODO: Do we really need python-apt? + switch b.Distribution { + case distributions.DistributionUbuntu2010: + // python-apt not available (though python3-apt is) + default: + packages = append(packages, "python-apt") + } } } else if b.Distribution.IsRHELFamily() { // TODO: These packages have been auto-installed for a long time, and likely we don't need all of them any longer diff --git a/util/pkg/distributions/distributions.go b/util/pkg/distributions/distributions.go index 6c3388e415..43936189ac 100644 --- a/util/pkg/distributions/distributions.go +++ b/util/pkg/distributions/distributions.go @@ -28,6 +28,7 @@ const ( DistributionUbuntu1604 Distribution = "xenial" DistributionUbuntu1804 Distribution = "bionic" DistributionUbuntu2004 Distribution = "focal" + DistributionUbuntu2010 Distribution = "groovy" DistributionAmazonLinux2 Distribution = "amazonlinux2" DistributionRhel7 Distribution = "rhel7" DistributionCentos7 Distribution = "centos7" @@ -41,7 +42,7 @@ func (d Distribution) IsDebianFamily() bool { switch d { case DistributionDebian9, DistributionDebian10: return true - case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004: + case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004, DistributionUbuntu2010: return true case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2: return false @@ -57,7 +58,7 @@ func (d Distribution) IsUbuntu() bool { switch d { case DistributionDebian9, DistributionDebian10: return false - case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004: + case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004, DistributionUbuntu2010: return true case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2: return false @@ -73,7 +74,7 @@ func (d Distribution) IsRHELFamily() bool { switch d { case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2: return true - case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004, DistributionDebian9, DistributionDebian10: + case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004, DistributionUbuntu2010, DistributionDebian9, DistributionDebian10: return false case DistributionFlatcar, DistributionContainerOS: return false @@ -85,7 +86,7 @@ func (d Distribution) IsRHELFamily() bool { func (d Distribution) IsSystemd() bool { switch d { - case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004, DistributionDebian9, DistributionDebian10: + case DistributionUbuntu1604, DistributionUbuntu1804, DistributionUbuntu2004, DistributionUbuntu2010, DistributionDebian9, DistributionDebian10: return true case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2: return true diff --git a/util/pkg/distributions/identify.go b/util/pkg/distributions/identify.go index fc941c0dda..60e7f5cd34 100644 --- a/util/pkg/distributions/identify.go +++ b/util/pkg/distributions/identify.go @@ -64,6 +64,8 @@ func FindDistribution(rootfs string) (Distribution, error) { return DistributionUbuntu1804, nil case "ubuntu-20.04": return DistributionUbuntu2004, nil + case "ubuntu-20.10": + return DistributionUbuntu2010, nil } // Some distros have a more verbose VERSION_ID diff --git a/util/pkg/distributions/identify_test.go b/util/pkg/distributions/identify_test.go index 2a6354a5dc..d208e4d3c8 100644 --- a/util/pkg/distributions/identify_test.go +++ b/util/pkg/distributions/identify_test.go @@ -99,6 +99,11 @@ func TestFindDistribution(t *testing.T) { err: nil, expected: DistributionUbuntu2004, }, + { + rootfs: "ubuntu2010", + err: nil, + expected: DistributionUbuntu2010, + }, { rootfs: "notfound", err: fmt.Errorf("reading /etc/os-release: open tests/notfound/etc/os-release: no such file or directory"), diff --git a/util/pkg/distributions/tests/ubuntu2010/etc/os-release b/util/pkg/distributions/tests/ubuntu2010/etc/os-release new file mode 100644 index 0000000000..4e0643d8c2 --- /dev/null +++ b/util/pkg/distributions/tests/ubuntu2010/etc/os-release @@ -0,0 +1,12 @@ +NAME="Ubuntu" +VERSION="20.10 (Groovy Gorilla)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 20.10" +VERSION_ID="20.10" +HOME_URL="https://www.ubuntu.com/" +SUPPORT_URL="https://help.ubuntu.com/" +BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" +PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" +VERSION_CODENAME=groovy +UBUNTU_CODENAME=groovy