From 0cbfc474fbaa7f1e1e5e88de5cb5a35ef360170e Mon Sep 17 00:00:00 2001 From: Michael Kaplan Date: Fri, 9 Sep 2022 12:28:34 +0200 Subject: [PATCH] CoreOS support (#309) * supportos: fedora and rhel coreOS * fix: add errors import to configurer/linux/coreos --- configurer/linux/coreos.go | 37 ++++++++++++++++++++++ configurer/linux/enterpriselinux/fedora.go | 3 +- configurer/linux/enterpriselinux/rhel.go | 3 +- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 configurer/linux/coreos.go diff --git a/configurer/linux/coreos.go b/configurer/linux/coreos.go new file mode 100644 index 00000000..480d4f06 --- /dev/null +++ b/configurer/linux/coreos.go @@ -0,0 +1,37 @@ +package linux + +import ( + "errors" + "github.com/k0sproject/k0sctl/configurer" + "github.com/k0sproject/rig" + "github.com/k0sproject/rig/os" + "github.com/k0sproject/rig/os/registry" + "strings" +) + +// CoreOS provides OS support for ostree based Fedora & RHEL systems +type CoreOS struct { + os.Linux + BaseLinux +} + +func init() { + registry.RegisterOSModule( + func(os rig.OSVersion) bool { + return os.ID == "fedora" && strings.Contains(os.Name, "CoreOS") || os.ID == "rhel" && strings.Contains(os.Name, "CoreOS") + }, + func() interface{} { + linuxType := &CoreOS{} + linuxType.PathFuncs = interface{}(linuxType).(configurer.PathFuncs) + return linuxType + }, + ) +} + +func (l CoreOS) InstallPackage(h os.Host, pkg ...string) error { + return errors.New("CoreOS does not support installing packages manually") +} + +func (l CoreOS) K0sBinaryPath() string { + return "/opt/bin/k0s" +} diff --git a/configurer/linux/enterpriselinux/fedora.go b/configurer/linux/enterpriselinux/fedora.go index 1412b6ac..830e5f20 100644 --- a/configurer/linux/enterpriselinux/fedora.go +++ b/configurer/linux/enterpriselinux/fedora.go @@ -5,6 +5,7 @@ import ( k0slinux "github.com/k0sproject/k0sctl/configurer/linux" "github.com/k0sproject/rig" "github.com/k0sproject/rig/os/registry" + "strings" ) // Fedora provides OS support for Fedora @@ -16,7 +17,7 @@ type Fedora struct { func init() { registry.RegisterOSModule( func(os rig.OSVersion) bool { - return os.ID == "fedora" + return os.ID == "fedora" && !strings.Contains(os.Name, "CoreOS") }, func() interface{} { linuxType := &Fedora{} diff --git a/configurer/linux/enterpriselinux/rhel.go b/configurer/linux/enterpriselinux/rhel.go index 8ca02555..9aaa1412 100644 --- a/configurer/linux/enterpriselinux/rhel.go +++ b/configurer/linux/enterpriselinux/rhel.go @@ -5,6 +5,7 @@ import ( k0slinux "github.com/k0sproject/k0sctl/configurer/linux" "github.com/k0sproject/rig" "github.com/k0sproject/rig/os/registry" + "strings" ) // RHEL provides OS support for RedHat Enterprise Linux @@ -15,7 +16,7 @@ type RHEL struct { func init() { registry.RegisterOSModule( func(os rig.OSVersion) bool { - return os.ID == "rhel" + return os.ID == "rhel" && !strings.Contains(os.Name, "CoreOS") }, func() interface{} { linuxType := &RHEL{}