mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-07 07:07:10 +02:00
48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
// +build linux
|
|
|
|
package platform
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/autonomy/talos/internal/app/init/internal/kernel"
|
|
"github.com/autonomy/talos/internal/app/init/internal/platform/baremetal"
|
|
"github.com/autonomy/talos/internal/app/init/internal/platform/cloud/aws"
|
|
"github.com/autonomy/talos/internal/app/init/internal/platform/cloud/vmware"
|
|
"github.com/autonomy/talos/internal/pkg/constants"
|
|
"github.com/autonomy/talos/internal/pkg/userdata"
|
|
)
|
|
|
|
// Platform is an interface describing a platform.
|
|
type Platform interface {
|
|
Name() string
|
|
UserData() (userdata.UserData, error)
|
|
Prepare(userdata.UserData) error
|
|
Install(userdata.UserData) error
|
|
}
|
|
|
|
// NewPlatform is a helper func for discovering the current platform.
|
|
func NewPlatform() (p Platform, err error) {
|
|
arguments, err := kernel.ParseProcCmdline()
|
|
if err != nil {
|
|
return
|
|
}
|
|
if platform, ok := arguments[constants.KernelParamPlatform]; ok {
|
|
switch platform {
|
|
case "aws":
|
|
if aws.IsEC2() {
|
|
p = &aws.AWS{}
|
|
} else {
|
|
return nil, fmt.Errorf("failed to verify EC2 PKCS7 signature")
|
|
}
|
|
case "vmware":
|
|
p = &vmware.VMware{}
|
|
case "bare-metal":
|
|
p = &baremetal.BareMetal{}
|
|
default:
|
|
return nil, fmt.Errorf("platform not supported: %s", platform)
|
|
}
|
|
}
|
|
return p, nil
|
|
}
|