mirror of
https://github.com/kairos-io/provider-kairos.git
synced 2025-09-25 14:36:49 +00:00
🌱 Change config to be more user friendly
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
This commit is contained in:
@@ -50,7 +50,7 @@ func Bootstrap(e *pluggable.Event) pluggable.EventResponse {
|
|||||||
|
|
||||||
p2pBlockDefined := providerConfig.P2P != nil
|
p2pBlockDefined := providerConfig.P2P != nil
|
||||||
tokenNotDefined := ((p2pBlockDefined && providerConfig.P2P.NetworkToken == "") || !p2pBlockDefined)
|
tokenNotDefined := ((p2pBlockDefined && providerConfig.P2P.NetworkToken == "") || !p2pBlockDefined)
|
||||||
skipAuto := (p2pBlockDefined && providerConfig.P2P.SkipAuto)
|
skipAuto := (p2pBlockDefined && !providerConfig.P2P.Auto.IsEnabled())
|
||||||
|
|
||||||
if providerConfig.P2P == nil && !providerConfig.K3s.Enabled && !providerConfig.K3sAgent.Enabled {
|
if providerConfig.P2P == nil && !providerConfig.K3s.Enabled && !providerConfig.K3sAgent.Enabled {
|
||||||
return pluggable.EventResponse{State: fmt.Sprintf("no kairos or k3s configuration. nothing to do: %s", cfg.Config)}
|
return pluggable.EventResponse{State: fmt.Sprintf("no kairos or k3s configuration. nothing to do: %s", cfg.Config)}
|
||||||
|
@@ -8,10 +8,9 @@ type P2P struct {
|
|||||||
LogLevel string `yaml:"loglevel,omitempty"`
|
LogLevel string `yaml:"loglevel,omitempty"`
|
||||||
VPN VPN `yaml:"vpn,omitempty"`
|
VPN VPN `yaml:"vpn,omitempty"`
|
||||||
|
|
||||||
MinimumNodes int `yaml:"minimum_nodes,omitempty"`
|
MinimumNodes int `yaml:"minimum_nodes,omitempty"`
|
||||||
SkipAuto bool `yaml:"skip_auto"`
|
DisableDHT bool `yaml:"disable_dht,omitempty"`
|
||||||
DisableDHT bool `yaml:"disable_dht,omitempty"`
|
Auto Auto `yaml:"auto,omitempty"`
|
||||||
AutoHA AutoHA `yaml:"auto-ha,omitempty"`
|
|
||||||
|
|
||||||
DynamicRoles bool `yaml:"dynamic_roles,omitempty"`
|
DynamicRoles bool `yaml:"dynamic_roles,omitempty"`
|
||||||
}
|
}
|
||||||
@@ -45,17 +44,30 @@ type KubeVIP struct {
|
|||||||
EIP string `yaml:"eip,omitempty"`
|
EIP string `yaml:"eip,omitempty"`
|
||||||
ManifestURL string `yaml:"manifest_url,omitempty"`
|
ManifestURL string `yaml:"manifest_url,omitempty"`
|
||||||
Interface string `yaml:"interface,omitempty"`
|
Interface string `yaml:"interface,omitempty"`
|
||||||
Enable bool `yaml:"enable,omitempty"`
|
Enable *bool `yaml:"enable,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k KubeVIP) IsEnabled() bool {
|
func (k KubeVIP) IsEnabled() bool {
|
||||||
return k.Enable || k.EIP != ""
|
return k.Enable == nil || k.EIP != "" || (k.Enable != nil && *k.Enable)
|
||||||
}
|
}
|
||||||
|
|
||||||
type AutoHA struct {
|
type Auto struct {
|
||||||
Enable bool `yaml:"enable,omitempty"`
|
Enable *bool `yaml:"enable,omitempty"`
|
||||||
|
HA HA `yaml:"ha,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a Auto) IsEnabled() bool {
|
||||||
|
return a.Enable == nil || (a.Enable != nil && *a.Enable)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ha HA) IsEnabled() bool {
|
||||||
|
return (ha.Enable != nil && *ha.Enable) || (ha.Enable == nil && ha.MasterNodes != nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
type HA struct {
|
||||||
|
Enable *bool `yaml:"enable,omitempty"`
|
||||||
ExternalDB string `yaml:"external_db,omitempty"`
|
ExternalDB string `yaml:"external_db,omitempty"`
|
||||||
MasterNodes int `yaml:"master_nodes,omitempty"`
|
MasterNodes *int `yaml:"master_nodes,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type K3s struct {
|
type K3s struct {
|
||||||
|
@@ -183,8 +183,8 @@ func Master(cc *config.Config, pconfig *providerConfig.Config, clusterInit, ha b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if pconfig.P2P.AutoHA.ExternalDB != "" {
|
if pconfig.P2P.Auto.HA.ExternalDB != "" {
|
||||||
args = []string{fmt.Sprintf("--datastore-endpoint=%s", pconfig.P2P.AutoHA.ExternalDB)}
|
args = []string{fmt.Sprintf("--datastore-endpoint=%s", pconfig.P2P.Auto.HA.ExternalDB)}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ha && !clusterInit {
|
if ha && !clusterInit {
|
||||||
@@ -198,7 +198,7 @@ func Master(cc *config.Config, pconfig *providerConfig.Config, clusterInit, ha b
|
|||||||
args = append(args, k3sConfig.Args...)
|
args = append(args, k3sConfig.Args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterInit && ha && pconfig.P2P.AutoHA.ExternalDB == "" {
|
if clusterInit && ha && pconfig.P2P.Auto.HA.ExternalDB == "" {
|
||||||
args = append(args, "--cluster-init")
|
args = append(args, "--cluster-init")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ func scheduleRoles(nodes []string, c *service.RoleConfig, cc *config.Config, pco
|
|||||||
workerRole := "worker"
|
workerRole := "worker"
|
||||||
masterHA := "master/ha"
|
masterHA := "master/ha"
|
||||||
|
|
||||||
if pconfig.P2P.AutoHA.Enable {
|
if pconfig.P2P.Auto.HA.IsEnabled() {
|
||||||
masterRole = "master/clusterinit"
|
masterRole = "master/clusterinit"
|
||||||
}
|
}
|
||||||
mastersHA := 0
|
mastersHA := 0
|
||||||
@@ -88,7 +88,7 @@ func scheduleRoles(nodes []string, c *service.RoleConfig, cc *config.Config, pco
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if pconfig.P2P.AutoHA.Enable && pconfig.P2P.AutoHA.MasterNodes != mastersHA {
|
if pconfig.P2P.Auto.HA.IsEnabled() && pconfig.P2P.Auto.HA.MasterNodes != nil && *pconfig.P2P.Auto.HA.MasterNodes != mastersHA {
|
||||||
if len(unassignedNodes) > 0 {
|
if len(unassignedNodes) > 0 {
|
||||||
if err := c.Client.Set("role", unassignedNodes[0], masterHA); err != nil {
|
if err := c.Client.Set("role", unassignedNodes[0], masterHA); err != nil {
|
||||||
c.Logger.Error(err)
|
c.Logger.Error(err)
|
||||||
|
Reference in New Issue
Block a user