59 lines
930 B
Go
59 lines
930 B
Go
package installer
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
type K0sOpt func(*k0sOpt)
|
|
type k0sOpt struct {
|
|
Type string // controller, worker
|
|
DisableWorker bool
|
|
WorkerTokenFile string
|
|
}
|
|
|
|
func WithK0sType(t string) K0sOpt {
|
|
types := []string{"controller", "worker"}
|
|
return func(o *k0sOpt) {
|
|
if lo.Contains(types, t) {
|
|
o.Type = t
|
|
}
|
|
}
|
|
}
|
|
|
|
func WithoutK0sWorker() K0sOpt {
|
|
return func(o *k0sOpt) {
|
|
o.DisableWorker = true
|
|
}
|
|
}
|
|
|
|
func WithK0sWorkerTokenFile(filename string) K0sOpt {
|
|
return func(o *k0sOpt) {
|
|
if filename != "" {
|
|
o.WorkerTokenFile = filename
|
|
}
|
|
}
|
|
}
|
|
|
|
func (i *installer) K0s(ctx context.Context, opts ...K0sOpt) error {
|
|
var (
|
|
err error
|
|
o = &k0sOpt{
|
|
Type: "controller",
|
|
DisableWorker: false,
|
|
WorkerTokenFile: "/etc/k0s/worker.token",
|
|
}
|
|
)
|
|
|
|
if err = i.targetOK(ctx); err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, fn := range opts {
|
|
fn(o)
|
|
}
|
|
|
|
return nil
|
|
}
|