-
Notifications
You must be signed in to change notification settings - Fork 452
/
options.go
181 lines (142 loc) · 4.13 KB
/
options.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package provision
import (
"io"
"os"
"runtime"
"github.com/siderolabs/talos/pkg/machinery/client"
clientconfig "github.com/siderolabs/talos/pkg/machinery/client/config"
)
// Option controls Provisioner.
type Option func(o *Options) error
// WithLogWriter sets logging destination.
func WithLogWriter(w io.Writer) Option {
return func(o *Options) error {
o.LogWriter = w
return nil
}
}
// WithKubernetesEndpoint specifies full external Kubernetes API endpoint to use when accessing Talos cluster.
func WithKubernetesEndpoint(endpoint string) Option {
return func(o *Options) error {
o.KubernetesEndpoint = endpoint
return nil
}
}
// WithTalosConfig specifies talosconfig to use when acessing Talos cluster.
func WithTalosConfig(talosConfig *clientconfig.Config) Option {
return func(o *Options) error {
o.TalosConfig = talosConfig
return nil
}
}
// WithTalosClient specifies client to use when acessing Talos cluster.
func WithTalosClient(client *client.Client) Option {
return func(o *Options) error {
o.TalosClient = client
return nil
}
}
// WithBootlader enables or disables bootloader (bootloader is enabled by default).
func WithBootlader(enabled bool) Option {
return func(o *Options) error {
o.BootloaderEnabled = enabled
return nil
}
}
// WithUEFI enables or disables UEFI boot on amd64 (default for amd64 is BIOS boot).
func WithUEFI(enabled bool) Option {
return func(o *Options) error {
o.UEFIEnabled = enabled
return nil
}
}
// WithTPM2 enables or disables TPM2 emulation.
func WithTPM2(enabled bool) Option {
return func(o *Options) error {
o.TPM2Enabled = enabled
return nil
}
}
// WithExtraUEFISearchPaths configures additional search paths to look for UEFI firmware.
func WithExtraUEFISearchPaths(extraUEFISearchPaths []string) Option {
return func(o *Options) error {
o.ExtraUEFISearchPaths = extraUEFISearchPaths
return nil
}
}
// WithTargetArch specifies target architecture for the cluster.
func WithTargetArch(arch string) Option {
return func(o *Options) error {
o.TargetArch = arch
return nil
}
}
// WithDockerPorts allows docker provisioner to expose ports on workers.
func WithDockerPorts(ports []string) Option {
return func(o *Options) error {
o.DockerPorts = ports
return nil
}
}
// WithDockerPortsHostIP sets host IP for docker provisioner to expose ports on workers.
func WithDockerPortsHostIP(hostIP string) Option {
return func(o *Options) error {
o.DockerPortsHostIP = hostIP
return nil
}
}
// WithDeleteOnErr informs the provisioner to delete cluster state folder on error.
func WithDeleteOnErr(v bool) Option {
return func(o *Options) error {
o.DeleteStateOnErr = v
return nil
}
}
// WithKMS inits KMS server in the provisioner.
func WithKMS(endpoint string) Option {
return func(o *Options) error {
o.KMSEndpoint = endpoint
return nil
}
}
// WithSiderolinkAgent enables or disables siderolink agent.
func WithSiderolinkAgent(v bool) Option {
return func(o *Options) error {
o.SiderolinkEnabled = v
return nil
}
}
// Options describes Provisioner parameters.
type Options struct {
LogWriter io.Writer
TalosConfig *clientconfig.Config
TalosClient *client.Client
KubernetesEndpoint string
TargetArch string
// Enable bootloader by booting from disk image after install.
BootloaderEnabled bool
// Enable UEFI (for amd64), arm64 can only boot UEFI
UEFIEnabled bool
// Enable TPM2 emulation using swtpm.
TPM2Enabled bool
// Configure additional search paths to look for UEFI firmware.
ExtraUEFISearchPaths []string
// Expose ports to worker machines in docker provisioner
DockerPorts []string
DockerPortsHostIP string
DeleteStateOnErr bool
KMSEndpoint string
SiderolinkEnabled bool
}
// DefaultOptions returns default options.
func DefaultOptions() Options {
return Options{
BootloaderEnabled: true,
TargetArch: runtime.GOARCH,
LogWriter: os.Stderr,
DockerPortsHostIP: "0.0.0.0",
}
}