@ydkn/pulumi-components 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/lib/alpine/deployment.d.ts +6 -2
- package/lib/alpine/deployment.js.map +1 -1
- package/lib/avahi/deployment.d.ts +4 -2
- package/lib/avahi/deployment.js +9 -2
- package/lib/avahi/deployment.js.map +1 -1
- package/lib/avahi/service.d.ts +6 -4
- package/lib/avahi/service.js +14 -11
- package/lib/avahi/service.js.map +1 -1
- package/lib/blocky/deployment.d.ts +3 -1
- package/lib/certManager/operator.d.ts +3 -1
- package/lib/certManager/operator.js.map +1 -1
- package/lib/common/componentResource.js.map +1 -1
- package/lib/cups/deployment.d.ts +6 -2
- package/lib/dhcpd/deployment.d.ts +3 -1
- package/lib/externalDns/dnsEndpoint.d.ts +3 -1
- package/lib/fcos/config.d.ts +2 -45
- package/lib/fcos/config.js +39 -44
- package/lib/fcos/config.js.map +1 -1
- package/lib/fcos/host.d.ts +3 -10
- package/lib/fcos/host.js +11 -2
- package/lib/fcos/host.js.map +1 -1
- package/lib/fcos/index.d.ts +2 -2
- package/lib/fcos/index.js +2 -2
- package/lib/fcos/index.js.map +1 -1
- package/lib/flatcar/config.d.ts +18 -0
- package/lib/flatcar/config.js +153 -0
- package/lib/flatcar/config.js.map +1 -0
- package/lib/flatcar/host.d.ts +25 -0
- package/lib/flatcar/host.js +53 -0
- package/lib/flatcar/host.js.map +1 -0
- package/lib/flatcar/index.d.ts +3 -0
- package/lib/flatcar/index.js +4 -0
- package/lib/flatcar/index.js.map +1 -0
- package/lib/freeradius/deployment.js.map +1 -1
- package/lib/grafana/alloy.js +3 -4
- package/lib/grafana/alloy.js.map +1 -1
- package/lib/grafana/dashboard.js.map +1 -1
- package/lib/grafana/datasource.js.map +1 -1
- package/lib/grafana/deployment.js +2 -2
- package/lib/grafana/deployment.js.map +1 -1
- package/lib/hcloud/assets/fcos-install.sh +15 -13
- package/lib/hcloud/assets/flatcar-install.sh +19 -0
- package/lib/hcloud/cluster.d.ts +10 -16
- package/lib/hcloud/cluster.js +255 -117
- package/lib/hcloud/cluster.js.map +1 -1
- package/lib/hcloud/kubernetes.js +0 -2
- package/lib/hcloud/kubernetes.js.map +1 -1
- package/lib/k0s/cluster.d.ts +1 -0
- package/lib/k0s/cluster.js +18 -3
- package/lib/k0s/cluster.js.map +1 -1
- package/lib/k0s/index.d.ts +2 -2
- package/lib/k0s/index.js.map +1 -1
- package/lib/localPathProvisioner/deployment.d.ts +3 -1
- package/lib/localPathProvisioner/sharedFilesystem.js +1 -1
- package/lib/localPathProvisioner/sharedFilesystem.js.map +1 -1
- package/lib/loki/deployment.js +1 -0
- package/lib/loki/deployment.js.map +1 -1
- package/lib/minio/tenant.d.ts +12 -6
- package/lib/minio/tenant.js +2 -2
- package/lib/minio/tenant.js.map +1 -1
- package/lib/mongodb/cluster.d.ts +6 -2
- package/lib/mongodb/cluster.js.map +1 -1
- package/lib/netbird/agent.d.ts +3 -1
- package/lib/netbird/agent.js +1 -0
- package/lib/netbird/agent.js.map +1 -1
- package/lib/netbird/assets/nftables.sh +12 -8
- package/lib/netbird/management.d.ts +3 -1
- package/lib/netbird/management.js.map +1 -1
- package/lib/node/ignition.d.ts +49 -0
- package/lib/node/ignition.js +2 -0
- package/lib/node/ignition.js.map +1 -0
- package/lib/node/index.d.ts +2 -1
- package/lib/node/index.js.map +1 -1
- package/lib/node/node.d.ts +9 -2
- package/lib/node/node.js.map +1 -1
- package/lib/nodeExporter/deployment.js +1 -4
- package/lib/nodeExporter/deployment.js.map +1 -1
- package/lib/plex/mediaServer.d.ts +6 -2
- package/lib/plex/mediaServer.js.map +1 -1
- package/lib/plex/playlists.d.ts +2 -1
- package/lib/plex/playlists.js +15 -15
- package/lib/plex/playlists.js.map +1 -1
- package/lib/postgresql/index.d.ts +2 -2
- package/lib/postgresql/index.js.map +1 -1
- package/lib/prometheus/operator.js +2 -2
- package/lib/raspberrypi/cluster.d.ts +11 -8
- package/lib/raspberrypi/cluster.js +206 -67
- package/lib/raspberrypi/cluster.js.map +1 -1
- package/lib/rook/cluster.js +1 -1
- package/lib/samba/dc.d.ts +12 -1
- package/lib/samba/dc.js +50 -10
- package/lib/samba/dc.js.map +1 -1
- package/lib/samba/deployment.d.ts +6 -2
- package/lib/samba/deployment.js.map +1 -1
- package/lib/traefik/middleware.d.ts +6 -2
- package/lib/transmission/deployment.d.ts +6 -2
- package/lib/transmission/deployment.js.map +1 -1
- package/lib/ubuntu/deployment.d.ts +6 -2
- package/lib/ubuntu/deployment.js.map +1 -1
- package/lib/unifi/networkServer.d.ts +10 -0
- package/lib/unifi/networkServer.js +107 -7
- package/lib/unifi/networkServer.js.map +1 -1
- package/lib/versitygw/deployment.d.ts +6 -2
- package/lib/versitygw/deployment.js.map +1 -1
- package/lib/wireguard/deployment.d.ts +3 -1
- package/lib/wireguard/deployment.js.map +1 -1
- package/package.json +17 -17
|
@@ -3,10 +3,15 @@ import * as random from "@pulumi/random";
|
|
|
3
3
|
import * as k8s from "@pulumi/kubernetes";
|
|
4
4
|
import { ComponentResource } from "../common/index.js";
|
|
5
5
|
import * as fcos from "../fcos/index.js";
|
|
6
|
+
import * as flatcar from "../flatcar/index.js";
|
|
6
7
|
import * as k0s from "../k0s/index.js";
|
|
7
8
|
export class Cluster extends ComponentResource {
|
|
9
|
+
static defaultOperatingSystem = "fcos";
|
|
8
10
|
static sshUsername = "pulumi";
|
|
9
|
-
static
|
|
11
|
+
static interfacesMap = {
|
|
12
|
+
fcos: "end0",
|
|
13
|
+
flatcar: "enabcm6e4ei0",
|
|
14
|
+
};
|
|
10
15
|
name;
|
|
11
16
|
nodes;
|
|
12
17
|
kubeconfig;
|
|
@@ -27,12 +32,13 @@ export class Cluster extends ComponentResource {
|
|
|
27
32
|
else {
|
|
28
33
|
this.name = pulumi.output(args.name);
|
|
29
34
|
}
|
|
30
|
-
const
|
|
31
|
-
|
|
35
|
+
const nodes = this.createServers(args.nodes, args.disks, args.filesystems, args.files, args.links, args.systemdUnits, args.sshAuthorizedKeys);
|
|
36
|
+
const enabledNodes = nodes.apply((nodes) => pulumi.all(nodes).apply((nodes) => nodes.filter((n) => n.disabled !== true)));
|
|
37
|
+
this.nodes = nodes;
|
|
32
38
|
const k0sCluster = new k0s.Cluster(name, {
|
|
33
39
|
name: this.name,
|
|
34
|
-
nodes:
|
|
35
|
-
k0s: pulumi.all([args.k0s]).apply(([k0s]) => {
|
|
40
|
+
nodes: enabledNodes,
|
|
41
|
+
k0s: pulumi.all([enabledNodes, args.k0s]).apply(([nodes, k0s]) => {
|
|
36
42
|
if (k0s === undefined) {
|
|
37
43
|
k0s = {};
|
|
38
44
|
}
|
|
@@ -59,7 +65,16 @@ export class Cluster extends ComponentResource {
|
|
|
59
65
|
k0s.config.spec.network.calico.wireguard = false;
|
|
60
66
|
}
|
|
61
67
|
if (k0s.config.spec.network.calico.ipAutodetectionMethod === undefined) {
|
|
62
|
-
|
|
68
|
+
const interfaces = new Set();
|
|
69
|
+
for (const iface of Object.values(Cluster.interfacesMap)) {
|
|
70
|
+
interfaces.add(iface);
|
|
71
|
+
}
|
|
72
|
+
for (const node of nodes) {
|
|
73
|
+
if (node.ethernetInterfaceName !== undefined) {
|
|
74
|
+
interfaces.add(node.ethernetInterfaceName);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
k0s.config.spec.network.calico.ipAutodetectionMethod = `interface=^(${Array.from(interfaces).join("|")})$`;
|
|
63
78
|
}
|
|
64
79
|
}
|
|
65
80
|
return k0s;
|
|
@@ -67,79 +82,131 @@ export class Cluster extends ComponentResource {
|
|
|
67
82
|
hooks: args.hooks,
|
|
68
83
|
cloudProvider: false,
|
|
69
84
|
protect: args.protect,
|
|
70
|
-
},
|
|
85
|
+
}, emptyOpts);
|
|
71
86
|
this.kubeletDirPath = k0sCluster.kubeletDirPath;
|
|
72
87
|
this.kubeconfig = k0sCluster.kubeconfig;
|
|
73
88
|
this.provider = new k8s.Provider(`${name}-k8s`, { kubeconfig: this.kubeconfig, suppressHelmHookWarnings: true }, emptyOpts);
|
|
74
89
|
this.registerOutputs();
|
|
75
90
|
}
|
|
76
|
-
createServers(nodes,
|
|
91
|
+
createServers(nodes, disks, filesystems, files, links, systemdUnits, sshAuthorizedKeys) {
|
|
77
92
|
const emptyOpts = this.opts();
|
|
78
93
|
return pulumi.all([nodes]).apply(([nodes]) => {
|
|
79
|
-
const
|
|
94
|
+
const outputNodes = [];
|
|
80
95
|
for (const key in nodes) {
|
|
81
96
|
// eslint-disable-next-line security/detect-object-injection
|
|
82
97
|
const node = nodes[key];
|
|
83
98
|
const sanitizedKey = key.replaceAll(":", "").toLowerCase();
|
|
84
99
|
const nodeId = new random.RandomId(`node-${sanitizedKey}`, { byteLength: 3 }, emptyOpts).hex;
|
|
85
100
|
const hostname = pulumi.interpolate `${this.name}-${k0s.Cluster.rolesHostname(node.roles)}-${nodeId}`;
|
|
101
|
+
node.operatingSystem = node.operatingSystem ?? Cluster.defaultOperatingSystem;
|
|
102
|
+
const roles = node.roles ?? [];
|
|
103
|
+
let isController = false;
|
|
104
|
+
for (const role of roles) {
|
|
105
|
+
if (role === "controller") {
|
|
106
|
+
isController = true;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (isController) {
|
|
111
|
+
roles.push("etcd");
|
|
112
|
+
}
|
|
86
113
|
const host = pulumi
|
|
87
|
-
.all([hostname,
|
|
88
|
-
.apply(([hostname,
|
|
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
|
-
for (const role of roles) {
|
|
123
|
-
if (role === "controller") {
|
|
124
|
-
isController = true;
|
|
114
|
+
.all([hostname, files, links, disks, filesystems, systemdUnits, sshAuthorizedKeys])
|
|
115
|
+
.apply(([hostname, files, links, disks, filesystems, systemdUnits, sshAuthorizedKeys]) => {
|
|
116
|
+
let osHost;
|
|
117
|
+
switch (node.operatingSystem) {
|
|
118
|
+
case "fcos":
|
|
119
|
+
osHost = new fcos.Host(hostname, {
|
|
120
|
+
hostname,
|
|
121
|
+
disks: pulumi
|
|
122
|
+
.all(disks ?? [])
|
|
123
|
+
.apply((disks) => pulumi.all(node.disks ?? []).apply((nodeDisks) => disks.concat(nodeDisks))),
|
|
124
|
+
filesystems: pulumi
|
|
125
|
+
.all(filesystems ?? [])
|
|
126
|
+
.apply((filesystems) => pulumi
|
|
127
|
+
.all(node.filesystems ?? [])
|
|
128
|
+
.apply((nodeFilesystems) => filesystems.concat(nodeFilesystems))),
|
|
129
|
+
files: pulumi
|
|
130
|
+
.all(files ?? [])
|
|
131
|
+
.apply((files) => pulumi
|
|
132
|
+
.all(node.files ?? [])
|
|
133
|
+
.apply((nodeFiles) => pulumi
|
|
134
|
+
.all([this.networkManagerConfigFiles(node)])
|
|
135
|
+
.apply(([networkManagerFiles]) => files.concat(nodeFiles).concat(networkManagerFiles)))),
|
|
136
|
+
links,
|
|
137
|
+
systemdUnits: pulumi
|
|
138
|
+
.all(systemdUnits ?? [])
|
|
139
|
+
.apply((systemdUnits) => pulumi
|
|
140
|
+
.all(node.systemdUnits ?? [])
|
|
141
|
+
.apply((nodeSystemdUnits) => systemdUnits.concat(nodeSystemdUnits))),
|
|
142
|
+
users: pulumi.all(node.users ?? []).apply((users) => {
|
|
143
|
+
return users.concat([
|
|
144
|
+
{ name: "core", sshAuthorizedKeys: (sshAuthorizedKeys ?? []).map((k) => k) },
|
|
145
|
+
]);
|
|
146
|
+
}),
|
|
147
|
+
sshUsers: [{ name: Cluster.sshUsername, groups: ["sudo"] }],
|
|
148
|
+
}, emptyOpts);
|
|
125
149
|
break;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
150
|
+
case "flatcar":
|
|
151
|
+
osHost = new flatcar.Host(hostname, {
|
|
152
|
+
hostname,
|
|
153
|
+
disks: pulumi
|
|
154
|
+
.all(disks ?? [])
|
|
155
|
+
.apply((disks) => pulumi.all(node.disks ?? []).apply((nodeDisks) => disks.concat(nodeDisks))),
|
|
156
|
+
filesystems: pulumi
|
|
157
|
+
.all(filesystems ?? [])
|
|
158
|
+
.apply((filesystems) => pulumi
|
|
159
|
+
.all(node.filesystems ?? [])
|
|
160
|
+
.apply((nodeFilesystems) => filesystems.concat(nodeFilesystems))),
|
|
161
|
+
files: pulumi
|
|
162
|
+
.all(files ?? [])
|
|
163
|
+
.apply((files) => pulumi
|
|
164
|
+
.all(node.files ?? [])
|
|
165
|
+
.apply((nodeFiles) => pulumi
|
|
166
|
+
.all([this.networkdConfigFiles(node)])
|
|
167
|
+
.apply(([networkManagerFiles]) => files.concat(nodeFiles).concat(networkManagerFiles)))),
|
|
168
|
+
links,
|
|
169
|
+
systemdUnits: pulumi
|
|
170
|
+
.all(systemdUnits ?? [])
|
|
171
|
+
.apply((systemdUnits) => pulumi
|
|
172
|
+
.all(node.systemdUnits ?? [])
|
|
173
|
+
.apply((nodeSystemdUnits) => systemdUnits.concat(nodeSystemdUnits))),
|
|
174
|
+
users: pulumi.all(node.users ?? []).apply((users) => {
|
|
175
|
+
return users.concat([
|
|
176
|
+
{ name: "core", sshAuthorizedKeys: (sshAuthorizedKeys ?? []).map((k) => k) },
|
|
177
|
+
]);
|
|
178
|
+
}),
|
|
179
|
+
sshUsers: [{ name: Cluster.sshUsername, groups: ["sudo"] }],
|
|
180
|
+
}, emptyOpts);
|
|
181
|
+
break;
|
|
182
|
+
default:
|
|
183
|
+
throw new Error(`Unsupported operating system ${node.operatingSystem}`);
|
|
130
184
|
}
|
|
131
185
|
return {
|
|
132
|
-
id: hostname,
|
|
133
|
-
hostname,
|
|
134
|
-
roles,
|
|
186
|
+
id: pulumi.output(hostname),
|
|
187
|
+
hostname: pulumi.output(hostname),
|
|
188
|
+
roles: pulumi.output(roles.map((role) => pulumi.output(role))),
|
|
135
189
|
ipv4Address: node.ipv4Address,
|
|
136
190
|
privateIpv4Address: node.privateIpv4Address,
|
|
137
191
|
ipv6Address: node.ipv6Address,
|
|
138
192
|
privateIpv6Address: node.privateIpv6Address,
|
|
139
|
-
labels: node.labels ?? {}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
193
|
+
labels: pulumi.all([node.labels ?? {}]).apply(([labels]) => {
|
|
194
|
+
const outputLabels = {};
|
|
195
|
+
for (const key in labels) {
|
|
196
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
197
|
+
outputLabels[key] = pulumi.output(labels[key]);
|
|
198
|
+
}
|
|
199
|
+
return outputLabels;
|
|
200
|
+
}),
|
|
201
|
+
taints: pulumi.all([node.taints ?? []]).apply(([taints]) => {
|
|
202
|
+
return taints.map((taint) => pulumi.output({
|
|
203
|
+
effect: pulumi.output(taint.effect),
|
|
204
|
+
key: pulumi.output(taint.key),
|
|
205
|
+
value: pulumi.output(taint.value),
|
|
206
|
+
}));
|
|
207
|
+
}),
|
|
208
|
+
username: pulumi.output(Cluster.sshUsername),
|
|
209
|
+
privateKey: osHost.sshPrivateKeys.apply((sshPrivateKeys) => {
|
|
143
210
|
for (const username in sshPrivateKeys) {
|
|
144
211
|
if (username === Cluster.sshUsername) {
|
|
145
212
|
// eslint-disable-next-line security/detect-object-injection
|
|
@@ -148,25 +215,30 @@ export class Cluster extends ComponentResource {
|
|
|
148
215
|
}
|
|
149
216
|
throw new Error(`No private key found for user ${Cluster.sshUsername}`);
|
|
150
217
|
}),
|
|
151
|
-
|
|
152
|
-
|
|
218
|
+
ignitionConfig: osHost.ignitionConfig,
|
|
219
|
+
disabled: pulumi.output(node.disabled ?? false),
|
|
220
|
+
ethernetInterfaceName: node.ethernetInterfaceName,
|
|
221
|
+
vlans: node.vlans,
|
|
153
222
|
};
|
|
154
223
|
});
|
|
155
|
-
|
|
224
|
+
outputNodes.push(host);
|
|
156
225
|
}
|
|
157
|
-
return
|
|
226
|
+
return outputNodes;
|
|
158
227
|
});
|
|
159
228
|
}
|
|
160
229
|
networkManagerConfigFiles(node) {
|
|
161
|
-
return pulumi
|
|
230
|
+
return pulumi
|
|
231
|
+
.all([node.operatingSystem, node.ethernetInterfaceName, node.vlans])
|
|
232
|
+
.apply(([os, ifaceName, vlans]) => {
|
|
162
233
|
const configs = [];
|
|
234
|
+
const ethernetInterfaceName = Cluster.ethernetInterfaceName(os, ifaceName);
|
|
163
235
|
configs.push({
|
|
164
|
-
path: `/etc/NetworkManager/system-connections/${
|
|
236
|
+
path: `/etc/NetworkManager/system-connections/${ethernetInterfaceName}.nmconnection`,
|
|
165
237
|
contents: [
|
|
166
238
|
"[connection]",
|
|
167
239
|
"type=ethernet",
|
|
168
|
-
`id=${
|
|
169
|
-
`interface-name=${
|
|
240
|
+
`id=${ethernetInterfaceName}`,
|
|
241
|
+
`interface-name=${ethernetInterfaceName}`,
|
|
170
242
|
"[ipv4]",
|
|
171
243
|
"method=auto",
|
|
172
244
|
"[ipv6]",
|
|
@@ -176,7 +248,7 @@ export class Cluster extends ComponentResource {
|
|
|
176
248
|
mode: 0o600,
|
|
177
249
|
});
|
|
178
250
|
for (const vlan of vlans ?? []) {
|
|
179
|
-
const parentInterfaceName = vlan.interface ??
|
|
251
|
+
const parentInterfaceName = vlan.interface ?? ethernetInterfaceName;
|
|
180
252
|
const interfaceName = `${parentInterfaceName}.${vlan.id}`;
|
|
181
253
|
const ipv4 = ["never-default=true"];
|
|
182
254
|
const ipv6 = ["never-default=true"];
|
|
@@ -216,5 +288,72 @@ export class Cluster extends ComponentResource {
|
|
|
216
288
|
return configs;
|
|
217
289
|
});
|
|
218
290
|
}
|
|
291
|
+
networkdConfigFiles(node) {
|
|
292
|
+
return pulumi
|
|
293
|
+
.all([node.operatingSystem, node.ethernetInterfaceName, node.vlans])
|
|
294
|
+
.apply(([os, ifaceName, vlans]) => {
|
|
295
|
+
const configs = [];
|
|
296
|
+
const ethernetInterfaceName = Cluster.ethernetInterfaceName(os, ifaceName);
|
|
297
|
+
configs.push({
|
|
298
|
+
path: `/etc/systemd/network/10-${ethernetInterfaceName}.network`,
|
|
299
|
+
contents: [
|
|
300
|
+
"[Match]",
|
|
301
|
+
`Name=${ethernetInterfaceName}`,
|
|
302
|
+
"[Link]",
|
|
303
|
+
"RequiredForOnline=routable",
|
|
304
|
+
"[Network]",
|
|
305
|
+
"DHCP=yes",
|
|
306
|
+
"IPv6AcceptRA=true",
|
|
307
|
+
...(vlans ?? [])
|
|
308
|
+
.filter((vlan) => (vlan.interface ?? ethernetInterfaceName) === ethernetInterfaceName)
|
|
309
|
+
.map((vlan) => `VLAN=${vlan.interface ?? ethernetInterfaceName}.${vlan.id}`),
|
|
310
|
+
].join("\n"),
|
|
311
|
+
mode: 0o644,
|
|
312
|
+
});
|
|
313
|
+
for (const vlan of vlans ?? []) {
|
|
314
|
+
const parentInterfaceName = vlan.interface ?? ethernetInterfaceName;
|
|
315
|
+
const interfaceName = `${parentInterfaceName}.${vlan.id}`;
|
|
316
|
+
const network = [];
|
|
317
|
+
if (vlan.ipv4Address !== undefined) {
|
|
318
|
+
network.push("DHCP=no", `Address=${vlan.ipv4Address}`);
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
network.push("DHCP=yes");
|
|
322
|
+
}
|
|
323
|
+
configs.push({
|
|
324
|
+
path: `/etc/systemd/network/20-${interfaceName}.netdev`,
|
|
325
|
+
contents: ["[NetDev]", `Name=${interfaceName}`, "Kind=vlan", "[VLAN]", `Id=${vlan.id}`].join("\n"),
|
|
326
|
+
mode: 0o644,
|
|
327
|
+
});
|
|
328
|
+
configs.push({
|
|
329
|
+
path: `/etc/systemd/network/30-${interfaceName}.network`,
|
|
330
|
+
contents: [
|
|
331
|
+
"[Match]",
|
|
332
|
+
`Name=${interfaceName}`,
|
|
333
|
+
"[Network]",
|
|
334
|
+
...network,
|
|
335
|
+
"IPv6AcceptRA=true",
|
|
336
|
+
"[DHCP]",
|
|
337
|
+
"UseRoutes=false",
|
|
338
|
+
].join("\n"),
|
|
339
|
+
mode: 0o644,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
return configs;
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
static ethernetInterfaceName(os, ifaceName) {
|
|
346
|
+
if (ifaceName !== undefined) {
|
|
347
|
+
return ifaceName;
|
|
348
|
+
}
|
|
349
|
+
switch (os) {
|
|
350
|
+
case "fcos":
|
|
351
|
+
return Cluster.interfacesMap.fcos;
|
|
352
|
+
case "flatcar":
|
|
353
|
+
return Cluster.interfacesMap.flatcar;
|
|
354
|
+
default:
|
|
355
|
+
throw new Error(`Unsupported operating system ${os}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
219
358
|
}
|
|
220
359
|
//# sourceMappingURL=cluster.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../lib/raspberrypi/cluster.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../lib/raspberrypi/cluster.ts"],"names":[],"mappings":"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"}
|
package/lib/rook/cluster.js
CHANGED
|
@@ -72,7 +72,7 @@ export class Cluster extends ComponentResource {
|
|
|
72
72
|
storageClassDeviceSets: args.storageClassDeviceSets,
|
|
73
73
|
},
|
|
74
74
|
resources: {
|
|
75
|
-
mgr: { requests: { cpu: "200m", memory: "
|
|
75
|
+
mgr: { requests: { cpu: "200m", memory: "768Mi" }, limits: { cpu: "4000m", memory: "1792Mi" } },
|
|
76
76
|
mon: { requests: { cpu: "200m", memory: "512Mi" }, limits: { cpu: "4000m", memory: "1536Mi" } },
|
|
77
77
|
osd: { requests: { cpu: "500m", memory: "2560Mi" }, limits: { cpu: "4000m", memory: "4096Mi" } },
|
|
78
78
|
prepareosd: { requests: { cpu: "500m", memory: "256Mi" }, limits: { cpu: "1000m", memory: "1024Mi" } },
|
package/lib/samba/dc.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
import { ComponentResource } from "../common/index.js";
|
|
3
|
+
export declare const ActionProvision = "provision";
|
|
4
|
+
export declare const ActionJoin = "join";
|
|
3
5
|
export interface SambaDcArgs {
|
|
4
6
|
namespace?: pulumi.Input<string>;
|
|
7
|
+
action?: pulumi.Input<string>;
|
|
5
8
|
serverName: pulumi.Input<string>;
|
|
6
9
|
netbiosName: pulumi.Input<string>;
|
|
7
10
|
workgroup: pulumi.Input<string>;
|
|
@@ -15,8 +18,13 @@ export interface SambaDcArgs {
|
|
|
15
18
|
serviceLabels?: pulumi.Input<{
|
|
16
19
|
[key: string]: pulumi.Input<string>;
|
|
17
20
|
}>;
|
|
18
|
-
nodeSelector?: pulumi.Input<
|
|
21
|
+
nodeSelector?: pulumi.Input<{
|
|
22
|
+
[key: string]: pulumi.Input<string>;
|
|
23
|
+
}>;
|
|
19
24
|
calicoIpReservations?: pulumi.Input<pulumi.Input<string>[]>;
|
|
25
|
+
domainNameservers?: pulumi.Input<pulumi.Input<string>[]>;
|
|
26
|
+
domainJoinUsername?: pulumi.Input<string>;
|
|
27
|
+
domainJoinPassword?: pulumi.Input<string>;
|
|
20
28
|
protect?: boolean;
|
|
21
29
|
}
|
|
22
30
|
export declare class SambaDc extends ComponentResource {
|
|
@@ -34,6 +42,9 @@ export declare class SambaDc extends ComponentResource {
|
|
|
34
42
|
readonly nsHostname: pulumi.Output<string>;
|
|
35
43
|
readonly ldapHostname: pulumi.Output<string>;
|
|
36
44
|
readonly administratorDN: pulumi.Output<string>;
|
|
45
|
+
readonly workgroup: pulumi.Output<string>;
|
|
46
|
+
readonly domain: pulumi.Output<string>;
|
|
47
|
+
readonly domainNameservers: pulumi.Output<pulumi.Output<string>[]>;
|
|
37
48
|
readonly administratorUsername: pulumi.Output<string>;
|
|
38
49
|
readonly administratorPassword: pulumi.Output<string>;
|
|
39
50
|
/**
|
package/lib/samba/dc.js
CHANGED
|
@@ -3,6 +3,8 @@ import * as random from "@pulumi/random";
|
|
|
3
3
|
import * as k8s from "@pulumi/kubernetes";
|
|
4
4
|
import { ComponentResource } from "../common/index.js";
|
|
5
5
|
import * as kubernetes from "../kubernetes/index.js";
|
|
6
|
+
export const ActionProvision = "provision";
|
|
7
|
+
export const ActionJoin = "join";
|
|
6
8
|
export class SambaDc extends ComponentResource {
|
|
7
9
|
static ports = [
|
|
8
10
|
{ port: 53, protocol: "UDP", name: "dns-udp" },
|
|
@@ -35,6 +37,9 @@ export class SambaDc extends ComponentResource {
|
|
|
35
37
|
nsHostname;
|
|
36
38
|
ldapHostname;
|
|
37
39
|
administratorDN;
|
|
40
|
+
workgroup;
|
|
41
|
+
domain;
|
|
42
|
+
domainNameservers;
|
|
38
43
|
administratorUsername;
|
|
39
44
|
administratorPassword;
|
|
40
45
|
/**
|
|
@@ -45,6 +50,9 @@ export class SambaDc extends ComponentResource {
|
|
|
45
50
|
*/
|
|
46
51
|
constructor(name, args, opts) {
|
|
47
52
|
super("samba:dc", name, args, opts);
|
|
53
|
+
if (args.action === undefined) {
|
|
54
|
+
args.action = ActionProvision;
|
|
55
|
+
}
|
|
48
56
|
if (args.storage === undefined) {
|
|
49
57
|
args.storage = "10Gi";
|
|
50
58
|
}
|
|
@@ -54,6 +62,8 @@ export class SambaDc extends ComponentResource {
|
|
|
54
62
|
const k8sOpts = this.opts(k8s.Provider);
|
|
55
63
|
opts = this.opts();
|
|
56
64
|
this.hostname = pulumi.interpolate `${args.serverName}.${args.domain}`;
|
|
65
|
+
this.workgroup = pulumi.output(args.workgroup);
|
|
66
|
+
this.domain = pulumi.output(args.domain);
|
|
57
67
|
this.namespace = args.namespace
|
|
58
68
|
? pulumi.output(args.namespace)
|
|
59
69
|
: new k8s.core.v1.Namespace(name, { metadata: { name } }, k8sOpts).metadata.name;
|
|
@@ -63,17 +73,26 @@ export class SambaDc extends ComponentResource {
|
|
|
63
73
|
labels: {
|
|
64
74
|
"app.kubernetes.io/name": "samba",
|
|
65
75
|
"app.kubernetes.io/component": "dc",
|
|
66
|
-
"app.kubernetes.io/instance":
|
|
76
|
+
"app.kubernetes.io/instance": args.serverName,
|
|
67
77
|
},
|
|
68
78
|
};
|
|
69
79
|
this.baseDN = pulumi.all([args.domain]).apply(([domain]) => `DC=${domain.replace(/\./g, ",DC=")}`);
|
|
70
80
|
this.nsHostname = pulumi.output(args.nsHostname);
|
|
71
81
|
this.ldapHostname = pulumi.output(args.ldapHostname);
|
|
72
|
-
|
|
73
|
-
|
|
82
|
+
if (args.action === ActionJoin) {
|
|
83
|
+
if (args.domainJoinUsername === undefined || args.domainJoinPassword === undefined) {
|
|
84
|
+
throw new Error("domainJoinUsername and domainJoinPassword are required for join action");
|
|
85
|
+
}
|
|
86
|
+
this.administratorUsername = pulumi.secret(args.domainJoinUsername);
|
|
87
|
+
this.administratorPassword = pulumi.secret(args.domainJoinPassword);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.administratorUsername = pulumi.secret(pulumi.output("Administrator"));
|
|
91
|
+
this.administratorPassword = pulumi.secret(new random.RandomPassword(`${name}-admin-password`, { length: 24, special: true }, opts).result);
|
|
92
|
+
}
|
|
74
93
|
this.administratorDN = pulumi.secret(pulumi.interpolate `CN=${this.administratorUsername},CN=Users,${this.baseDN}`);
|
|
75
94
|
this.adminPasswordSecret = new k8s.core.v1.Secret(`${name}-admin-password`, {
|
|
76
|
-
metadata: { ...metadata, name: pulumi.interpolate `${name}-admin-password` },
|
|
95
|
+
metadata: { ...metadata, name: pulumi.interpolate `${metadata.name}-admin-password` },
|
|
77
96
|
stringData: {
|
|
78
97
|
"samba-admin-password": this.administratorPassword,
|
|
79
98
|
},
|
|
@@ -88,13 +107,13 @@ export class SambaDc extends ComponentResource {
|
|
|
88
107
|
this.calicoIpReservations = new k8s.apiextensions.CustomResource(name, {
|
|
89
108
|
apiVersion: "crd.projectcalico.org/v1",
|
|
90
109
|
kind: "IPReservation",
|
|
91
|
-
metadata: {
|
|
110
|
+
metadata: { ...metadata, namespace: undefined },
|
|
92
111
|
spec: {
|
|
93
112
|
reservedCIDRs: args.calicoIpReservations,
|
|
94
113
|
},
|
|
95
114
|
}, k8sOpts);
|
|
96
115
|
}
|
|
97
|
-
const dataVolumeClaimName = pulumi.interpolate `${name}-data`;
|
|
116
|
+
const dataVolumeClaimName = pulumi.interpolate `${metadata.name}-data`;
|
|
98
117
|
this.dataVolumeClaim = new k8s.core.v1.PersistentVolumeClaim(`${name}-data`, {
|
|
99
118
|
metadata: { ...metadata, name: dataVolumeClaimName },
|
|
100
119
|
spec: {
|
|
@@ -131,6 +150,11 @@ export class SambaDc extends ComponentResource {
|
|
|
131
150
|
{ key: "node-role.kubernetes.io/control-plane", operator: "Exists", effect: "NoSchedule" },
|
|
132
151
|
],
|
|
133
152
|
hostname: pulumi.all([args.serverName]).apply(([serverName]) => serverName.toLowerCase()),
|
|
153
|
+
dnsPolicy: args.domainNameservers ? "None" : undefined,
|
|
154
|
+
dnsConfig: {
|
|
155
|
+
nameservers: args.domainNameservers,
|
|
156
|
+
searches: args.domain ? [args.domain] : undefined,
|
|
157
|
+
},
|
|
134
158
|
containers: [
|
|
135
159
|
{
|
|
136
160
|
name: "samba-dc",
|
|
@@ -143,7 +167,7 @@ export class SambaDc extends ComponentResource {
|
|
|
143
167
|
{ name: "ALLOW_DNS_UPDATES", value: "secure" },
|
|
144
168
|
{ name: "BIND_INTERFACES_ONLY", value: "no" },
|
|
145
169
|
{ name: "DNS_FORWARDER", value: "1.1.1.1" },
|
|
146
|
-
{ name: "DOMAIN_ACTION", value:
|
|
170
|
+
{ name: "DOMAIN_ACTION", value: args.action },
|
|
147
171
|
{ name: "DOMAIN_LOGONS", value: "yes" },
|
|
148
172
|
{ name: "DOMAIN_MASTER", value: "yes" },
|
|
149
173
|
{ name: "INTERFACES", value: "eth0" },
|
|
@@ -161,15 +185,15 @@ export class SambaDc extends ComponentResource {
|
|
|
161
185
|
})),
|
|
162
186
|
readinessProbe: {
|
|
163
187
|
tcpSocket: { port: "smb" },
|
|
164
|
-
periodSeconds:
|
|
188
|
+
periodSeconds: 30,
|
|
165
189
|
failureThreshold: 3,
|
|
166
190
|
successThreshold: 1,
|
|
167
191
|
timeoutSeconds: 10,
|
|
168
192
|
},
|
|
169
193
|
livenessProbe: {
|
|
170
194
|
tcpSocket: { port: "smb" },
|
|
171
|
-
periodSeconds:
|
|
172
|
-
failureThreshold:
|
|
195
|
+
periodSeconds: 30,
|
|
196
|
+
failureThreshold: 10,
|
|
173
197
|
successThreshold: 1,
|
|
174
198
|
timeoutSeconds: 10,
|
|
175
199
|
},
|
|
@@ -224,6 +248,22 @@ export class SambaDc extends ComponentResource {
|
|
|
224
248
|
},
|
|
225
249
|
hostnames: [args.nsHostname, args.ldapHostname],
|
|
226
250
|
}, { ...k8sOpts, dependsOn: [this.deployment] });
|
|
251
|
+
this.domainNameservers = pulumi
|
|
252
|
+
.all([args.domainNameservers, this.service.status.loadBalancer])
|
|
253
|
+
.apply(([domainNameservers, loadBalancer]) => {
|
|
254
|
+
const addresses = [];
|
|
255
|
+
if (loadBalancer?.ingress !== undefined) {
|
|
256
|
+
for (const ingress of loadBalancer.ingress) {
|
|
257
|
+
if (ingress.ip !== undefined && /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/g.test(ingress.ip)) {
|
|
258
|
+
addresses.push(ingress.ip);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (domainNameservers !== undefined) {
|
|
263
|
+
addresses.push(...domainNameservers);
|
|
264
|
+
}
|
|
265
|
+
return addresses.map((address) => pulumi.output(address));
|
|
266
|
+
});
|
|
227
267
|
this.registerOutputs();
|
|
228
268
|
}
|
|
229
269
|
}
|