-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
nodeconfig.go
93 lines (74 loc) · 2.62 KB
/
nodeconfig.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package talos
import (
"github.com/budimanjojo/talhelper/pkg/config"
"github.com/siderolabs/talos/pkg/machinery/config/types/v1alpha1"
taloscfg "github.com/siderolabs/talos/pkg/machinery/config"
"github.com/siderolabs/talos/pkg/machinery/config/generate"
"github.com/siderolabs/talos/pkg/machinery/config/machine"
)
func GenerateNodeConfigBytes(node *config.Nodes, input *generate.Input) ([]byte, error) {
cfg, err := generateNodeConfig(node, input)
if err != nil {
return nil, err
}
return cfg.Bytes()
}
func generateNodeConfig(node *config.Nodes, input *generate.Input) (taloscfg.Provider, error) {
var c taloscfg.Provider
var err error
nodeInput, err := patchNodeInput(node, input)
if err != nil {
return nil, err
}
switch node.ControlPlane {
case true:
c, err = nodeInput.Config(machine.TypeControlPlane)
if err != nil {
return nil, err
}
case false:
c, err = nodeInput.Config(machine.TypeWorker)
if err != nil {
return nil, err
}
}
// https://github.com/budimanjojo/talhelper/issues/81
if input.Options.VersionContract.SecretboxEncryptionSupported() && input.Options.SecretsBundle.Secrets.AESCBCEncryptionSecret != "" {
c.RawV1Alpha1().ClusterConfig.ClusterAESCBCEncryptionSecret = input.Options.SecretsBundle.Secrets.AESCBCEncryptionSecret
}
cfg := applyNodeOverride(node, c)
return *cfg, nil
}
func applyNodeOverride(node *config.Nodes, cfg taloscfg.Provider) *taloscfg.Provider {
cfg.RawV1Alpha1().MachineConfig.MachineNetwork.NetworkHostname = node.Hostname
if len(node.Nameservers) != 0 {
cfg.RawV1Alpha1().MachineConfig.MachineNetwork.NameServers = node.Nameservers
}
if node.DisableSearchDomain {
cfg.RawV1Alpha1().MachineConfig.MachineNetwork.NetworkDisableSearchDomain = &node.DisableSearchDomain
}
if len(node.NetworkInterfaces) != 0 {
cfg.RawV1Alpha1().MachineConfig.MachineNetwork.NetworkInterfaces = node.NetworkInterfaces
}
if node.InstallDiskSelector != nil {
cfg.RawV1Alpha1().MachineConfig.MachineInstall.InstallDiskSelector = node.InstallDiskSelector
}
if len(node.KernelModules) != 0 {
cfg.RawV1Alpha1().MachineConfig.MachineKernel = &v1alpha1.KernelConfig{}
cfg.RawV1Alpha1().MachineConfig.MachineKernel.KernelModules = node.KernelModules
}
if node.NodeLabels != nil {
cfg.RawV1Alpha1().MachineConfig.MachineNodeLabels = node.NodeLabels
}
return &cfg
}
func patchNodeInput(node *config.Nodes, input *generate.Input) (*generate.Input, error) {
nodeInput := input
if node.InstallDisk != "" {
nodeInput.Options.InstallDisk = node.InstallDisk
}
if len(node.MachineDisks) > 0 {
nodeInput.Options.MachineDisks = node.MachineDisks
}
return nodeInput, nil
}