@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.
Files changed (110) hide show
  1. package/index.d.ts +2 -1
  2. package/index.js +2 -1
  3. package/index.js.map +1 -1
  4. package/lib/alpine/deployment.d.ts +6 -2
  5. package/lib/alpine/deployment.js.map +1 -1
  6. package/lib/avahi/deployment.d.ts +4 -2
  7. package/lib/avahi/deployment.js +9 -2
  8. package/lib/avahi/deployment.js.map +1 -1
  9. package/lib/avahi/service.d.ts +6 -4
  10. package/lib/avahi/service.js +14 -11
  11. package/lib/avahi/service.js.map +1 -1
  12. package/lib/blocky/deployment.d.ts +3 -1
  13. package/lib/certManager/operator.d.ts +3 -1
  14. package/lib/certManager/operator.js.map +1 -1
  15. package/lib/common/componentResource.js.map +1 -1
  16. package/lib/cups/deployment.d.ts +6 -2
  17. package/lib/dhcpd/deployment.d.ts +3 -1
  18. package/lib/externalDns/dnsEndpoint.d.ts +3 -1
  19. package/lib/fcos/config.d.ts +2 -45
  20. package/lib/fcos/config.js +39 -44
  21. package/lib/fcos/config.js.map +1 -1
  22. package/lib/fcos/host.d.ts +3 -10
  23. package/lib/fcos/host.js +11 -2
  24. package/lib/fcos/host.js.map +1 -1
  25. package/lib/fcos/index.d.ts +2 -2
  26. package/lib/fcos/index.js +2 -2
  27. package/lib/fcos/index.js.map +1 -1
  28. package/lib/flatcar/config.d.ts +18 -0
  29. package/lib/flatcar/config.js +153 -0
  30. package/lib/flatcar/config.js.map +1 -0
  31. package/lib/flatcar/host.d.ts +25 -0
  32. package/lib/flatcar/host.js +53 -0
  33. package/lib/flatcar/host.js.map +1 -0
  34. package/lib/flatcar/index.d.ts +3 -0
  35. package/lib/flatcar/index.js +4 -0
  36. package/lib/flatcar/index.js.map +1 -0
  37. package/lib/freeradius/deployment.js.map +1 -1
  38. package/lib/grafana/alloy.js +3 -4
  39. package/lib/grafana/alloy.js.map +1 -1
  40. package/lib/grafana/dashboard.js.map +1 -1
  41. package/lib/grafana/datasource.js.map +1 -1
  42. package/lib/grafana/deployment.js +2 -2
  43. package/lib/grafana/deployment.js.map +1 -1
  44. package/lib/hcloud/assets/fcos-install.sh +15 -13
  45. package/lib/hcloud/assets/flatcar-install.sh +19 -0
  46. package/lib/hcloud/cluster.d.ts +10 -16
  47. package/lib/hcloud/cluster.js +255 -117
  48. package/lib/hcloud/cluster.js.map +1 -1
  49. package/lib/hcloud/kubernetes.js +0 -2
  50. package/lib/hcloud/kubernetes.js.map +1 -1
  51. package/lib/k0s/cluster.d.ts +1 -0
  52. package/lib/k0s/cluster.js +18 -3
  53. package/lib/k0s/cluster.js.map +1 -1
  54. package/lib/k0s/index.d.ts +2 -2
  55. package/lib/k0s/index.js.map +1 -1
  56. package/lib/localPathProvisioner/deployment.d.ts +3 -1
  57. package/lib/localPathProvisioner/sharedFilesystem.js +1 -1
  58. package/lib/localPathProvisioner/sharedFilesystem.js.map +1 -1
  59. package/lib/loki/deployment.js +1 -0
  60. package/lib/loki/deployment.js.map +1 -1
  61. package/lib/minio/tenant.d.ts +12 -6
  62. package/lib/minio/tenant.js +2 -2
  63. package/lib/minio/tenant.js.map +1 -1
  64. package/lib/mongodb/cluster.d.ts +6 -2
  65. package/lib/mongodb/cluster.js.map +1 -1
  66. package/lib/netbird/agent.d.ts +3 -1
  67. package/lib/netbird/agent.js +1 -0
  68. package/lib/netbird/agent.js.map +1 -1
  69. package/lib/netbird/assets/nftables.sh +12 -8
  70. package/lib/netbird/management.d.ts +3 -1
  71. package/lib/netbird/management.js.map +1 -1
  72. package/lib/node/ignition.d.ts +49 -0
  73. package/lib/node/ignition.js +2 -0
  74. package/lib/node/ignition.js.map +1 -0
  75. package/lib/node/index.d.ts +2 -1
  76. package/lib/node/index.js.map +1 -1
  77. package/lib/node/node.d.ts +9 -2
  78. package/lib/node/node.js.map +1 -1
  79. package/lib/nodeExporter/deployment.js +1 -4
  80. package/lib/nodeExporter/deployment.js.map +1 -1
  81. package/lib/plex/mediaServer.d.ts +6 -2
  82. package/lib/plex/mediaServer.js.map +1 -1
  83. package/lib/plex/playlists.d.ts +2 -1
  84. package/lib/plex/playlists.js +15 -15
  85. package/lib/plex/playlists.js.map +1 -1
  86. package/lib/postgresql/index.d.ts +2 -2
  87. package/lib/postgresql/index.js.map +1 -1
  88. package/lib/prometheus/operator.js +2 -2
  89. package/lib/raspberrypi/cluster.d.ts +11 -8
  90. package/lib/raspberrypi/cluster.js +206 -67
  91. package/lib/raspberrypi/cluster.js.map +1 -1
  92. package/lib/rook/cluster.js +1 -1
  93. package/lib/samba/dc.d.ts +12 -1
  94. package/lib/samba/dc.js +50 -10
  95. package/lib/samba/dc.js.map +1 -1
  96. package/lib/samba/deployment.d.ts +6 -2
  97. package/lib/samba/deployment.js.map +1 -1
  98. package/lib/traefik/middleware.d.ts +6 -2
  99. package/lib/transmission/deployment.d.ts +6 -2
  100. package/lib/transmission/deployment.js.map +1 -1
  101. package/lib/ubuntu/deployment.d.ts +6 -2
  102. package/lib/ubuntu/deployment.js.map +1 -1
  103. package/lib/unifi/networkServer.d.ts +10 -0
  104. package/lib/unifi/networkServer.js +107 -7
  105. package/lib/unifi/networkServer.js.map +1 -1
  106. package/lib/versitygw/deployment.d.ts +6 -2
  107. package/lib/versitygw/deployment.js.map +1 -1
  108. package/lib/wireguard/deployment.d.ts +3 -1
  109. package/lib/wireguard/deployment.js.map +1 -1
  110. package/package.json +17 -17
@@ -3,29 +3,20 @@ import * as tls from "@pulumi/tls";
3
3
  import * as k8s from "@pulumi/kubernetes";
4
4
  import { ComponentResource } from "../common/index.js";
5
5
  import * as node from "../node/index.js";
6
- import * as fcos from "../fcos/index.js";
7
6
  import * as k0s from "../k0s/index.js";
8
- interface Nodes extends node.Node, fcos.HostArgs {
7
+ export interface Node extends node.Node, node.IgnitionArgs {
9
8
  serverType: pulumi.Input<string>;
10
9
  count?: pulumi.Input<number>;
11
10
  location?: pulumi.Input<string>;
12
- disabled?: pulumi.Input<boolean>;
13
11
  }
14
- export interface Node extends node.Node {
15
- fcosHost: fcos.Host;
16
- disabled: boolean;
17
- }
18
- /**
19
- * Arguments for hcloud cluster resource
20
- */
21
- export interface ClusterArgs extends k0s.ClusterArgs, fcos.IgnitionArgs {
12
+ export interface ClusterArgs extends k0s.ClusterArgs, node.IgnitionArgs {
22
13
  name?: pulumi.Input<string>;
23
14
  token: pulumi.Input<string>;
24
15
  location: pulumi.Input<string>;
25
16
  zone: pulumi.Input<string>;
26
17
  networkRange: pulumi.Input<string>;
27
18
  nodeRange: pulumi.Input<string>;
28
- nodes: pulumi.Input<pulumi.Input<Nodes>[]>;
19
+ nodes: pulumi.Input<pulumi.Input<Node>[]>;
29
20
  externalSshAccess?: pulumi.Input<boolean>;
30
21
  trustedNetworkRanges?: pulumi.Input<pulumi.Input<string>[]>;
31
22
  externalAccess?: pulumi.Input<boolean>;
@@ -33,12 +24,13 @@ export interface ClusterArgs extends k0s.ClusterArgs, fcos.IgnitionArgs {
33
24
  }
34
25
  export declare class Cluster extends ComponentResource {
35
26
  private static readonly rescueSshUsername;
27
+ private static readonly defaultOperatingSystem;
36
28
  private static readonly sshUsername;
37
29
  private static readonly interfacesMap;
38
30
  private static readonly dnsServers;
39
31
  private static readonly gatewayIPv6;
40
- private static readonly fcosInstallScriptPathRemote;
41
- private static readonly fcosConfigPathRemote;
32
+ private static readonly ignitionConfigPathRemote;
33
+ private static readonly installScriptPathRemote;
42
34
  private readonly sshKey;
43
35
  private readonly network;
44
36
  private readonly nodeSubnet;
@@ -54,7 +46,7 @@ export declare class Cluster extends ComponentResource {
54
46
  readonly networkId: pulumi.Output<number>;
55
47
  readonly networkRange: pulumi.Output<string>;
56
48
  readonly nodeRange: pulumi.Output<string>;
57
- readonly nodes: pulumi.Output<pulumi.Output<Node>[]>;
49
+ readonly nodes: pulumi.Output<pulumi.Output<node.Node>[]>;
58
50
  readonly kubeconfig: pulumi.Output<string>;
59
51
  readonly provider: k8s.Provider;
60
52
  readonly kubeletDirPath: pulumi.Output<string>;
@@ -67,5 +59,7 @@ export declare class Cluster extends ComponentResource {
67
59
  constructor(name: string, args: ClusterArgs, opts?: pulumi.ComponentResourceOptions);
68
60
  private createServers;
69
61
  private configureFcosNode;
62
+ private configureFlatcarNode;
63
+ private fileAssetFromString;
64
+ private static ethernetInterfaceName;
70
65
  }
71
- export {};
@@ -10,21 +10,28 @@ import * as url from "url";
10
10
  import * as crypto from "crypto";
11
11
  import { ComponentResource } from "../common/index.js";
12
12
  import * as fcos from "../fcos/index.js";
13
+ import * as flatcar from "../flatcar/index.js";
13
14
  import * as k0s from "../k0s/index.js";
14
15
  import { Kubernetes } from "./kubernetes.js";
15
16
  export class Cluster extends ComponentResource {
16
17
  static rescueSshUsername = "root";
18
+ static defaultOperatingSystem = "fcos";
17
19
  static sshUsername = "pulumi";
18
20
  static interfacesMap = {
19
- DEFAULT: { primary: "enp1s0", private: [7, 8, 9].map((i) => `enp${i}s0`) },
20
- "^cx\\d+1$": { primary: "ens3", private: [10, 11, 12].map((i) => `ens${i}`) },
21
- "^cx\\d+2$": { primary: "enp1s0", private: [7, 8, 9].map((i) => `enp${i}s0`) },
22
- "^cax\\d+1$": { primary: "enp1s0", private: [7, 8, 9].map((i) => `enp${i}s0`) },
21
+ fcos: {
22
+ DEFAULT: { primary: "enp1s0", private: [7, 8].map((i) => `enp${i}s0`) },
23
+ "^cx\\d+1$": { primary: "ens3", private: [10, 11].map((i) => `ens${i}`) },
24
+ "^cx\\d+2$": { primary: "enp1s0", private: [7, 8].map((i) => `enp${i}s0`) },
25
+ "^cax\\d+1$": { primary: "enp1s0", private: [7, 8].map((i) => `enp${i}s0`) },
26
+ },
27
+ flatcar: {
28
+ DEFAULT: { primary: "eth0", private: [1, 2].map((i) => `eth${i}`) },
29
+ },
23
30
  };
24
31
  static dnsServers = ["2a01:4ff:ff00::add:1", "2a01:4ff:ff00::add:2"];
25
32
  static gatewayIPv6 = "fe80::1";
26
- static fcosInstallScriptPathRemote = "/tmp/fcos-install.sh";
27
- static fcosConfigPathRemote = "/tmp/fcos-config.ign";
33
+ static ignitionConfigPathRemote = "/tmp/config.ign";
34
+ static installScriptPathRemote = "/tmp/install.sh";
28
35
  sshKey;
29
36
  network;
30
37
  nodeSubnet;
@@ -76,7 +83,7 @@ export class Cluster extends ComponentResource {
76
83
  .apply(([result]) => {
77
84
  return result.images.filter((image) => image.osFlavor === "ubuntu").sort((a, b) => (a > b ? -1 : 1))[0].name;
78
85
  });
79
- const servers = this.createServers(args.nodes, serverImage, this.sshKey, this.sshPrivateKey.privateKeyOpenssh, this.nodeSubnet, this.placementGroup, args.modules, args.packages, args.files, args.systemdUnits, args.sshAuthorizedKeys, args.protect);
86
+ const servers = this.createServers(args.nodes, serverImage, this.sshKey, this.sshPrivateKey.privateKeyOpenssh, this.nodeSubnet, this.placementGroup, args.files, args.links, args.systemdUnits, args.sshAuthorizedKeys, args.protect);
80
87
  this.nodes = servers.apply((servers) => servers.map((s) => s.node));
81
88
  const nodeIPs = pulumi.all([this.nodes]).apply(([nodes]) => pulumi.all(nodes).apply((nodes) => {
82
89
  const nodeIPs = [];
@@ -164,13 +171,15 @@ export class Cluster extends ComponentResource {
164
171
  }
165
172
  if (k0s.config.spec.network.calico.ipAutodetectionMethod === undefined) {
166
173
  const interfaces = new Set();
167
- for (const iface of Object.values(Cluster.interfacesMap)) {
168
- interfaces.add(iface.primary);
169
- for (const iface2 of iface.private) {
170
- interfaces.add(iface2);
174
+ for (const os of Object.values(Cluster.interfacesMap)) {
175
+ for (const iface of Object.values(os)) {
176
+ interfaces.add(iface.primary);
177
+ for (const privateIface of iface.private) {
178
+ interfaces.add(privateIface);
179
+ }
171
180
  }
172
181
  }
173
- k0s.config.spec.network.calico.ipAutodetectionMethod = `interface=${Array.from(interfaces).join(",")}`;
182
+ k0s.config.spec.network.calico.ipAutodetectionMethod = `interface=^(${Array.from(interfaces).join("|")})$`;
174
183
  }
175
184
  }
176
185
  return k0s;
@@ -193,7 +202,7 @@ export class Cluster extends ComponentResource {
193
202
  }, { ...emptyOpts, providers: [this.provider] });
194
203
  this.registerOutputs();
195
204
  }
196
- createServers(nodes, image, sshKey, sshPrivateKey, subnet, placementGroup, modules, packages, files, systemdUnits, sshAuthorizedKeys, protect) {
205
+ createServers(nodes, image, sshKey, sshPrivateKey, subnet, placementGroup, files, links, systemdUnits, sshAuthorizedKeys, protect) {
197
206
  const emptyOpts = this.opts();
198
207
  const hcloudOpts = this.opts(hcloud.Provider);
199
208
  return pulumi.all([nodes]).apply(([nodes]) => {
@@ -203,105 +212,154 @@ export class Cluster extends ComponentResource {
203
212
  if (nodesCount === undefined) {
204
213
  nodesCount = 1;
205
214
  }
215
+ nodeGroup.operatingSystem = nodeGroup.operatingSystem ?? Cluster.defaultOperatingSystem;
216
+ const roles = nodeGroup.roles ?? [];
217
+ let isController = false;
218
+ for (const role of roles) {
219
+ if (role === "controller") {
220
+ isController = true;
221
+ break;
222
+ }
223
+ }
224
+ if (isController) {
225
+ roles.push("etcd");
226
+ }
206
227
  for (let i = 0; i < nodesCount; i++) {
207
228
  const nodeId = new random.RandomId(`${nodeGroup.id}-${i}`, { byteLength: 3 }, emptyOpts).hex;
208
229
  const hostname = pulumi.interpolate `${this.name}-${k0s.Cluster.rolesHostname(nodeGroup.roles)}-${nodeId}`;
209
- const server = pulumi
210
- .all([this.name, hostname, nodeGroup.roles, sshKey, nodeId, placementGroup.id])
211
- .apply(([name, hostname, roles, sshKey, nodeId, placementGroupId]) => {
212
- const role = k0s.Cluster.rolesHostname(roles);
213
- return new hcloud.Server(hostname, {
214
- name: hostname,
215
- location: nodeGroup.location ?? this.location,
216
- serverType: nodeGroup.serverType,
217
- image,
218
- rescue: "linux64",
219
- sshKeys: [sshKey.id],
220
- keepDisk: true,
221
- labels: { cluster: name, role, nodeId },
222
- placementGroupId: parseInt(placementGroupId),
223
- }, { ...hcloudOpts, ignoreChanges: ["image", "sshKeys"], protect });
224
- });
230
+ const server = pulumi.all([this.name, hostname, nodeGroup.roles, sshKey, nodeId, placementGroup.id]).apply(([name, hostname, roles, sshKey, nodeId, placementGroupId]) => new hcloud.Server(hostname, {
231
+ name: hostname,
232
+ location: nodeGroup.location ?? this.location,
233
+ serverType: nodeGroup.serverType,
234
+ image,
235
+ rescue: "linux64",
236
+ sshKeys: [sshKey.id],
237
+ keepDisk: true,
238
+ labels: { cluster: name, nodeId, role: k0s.Cluster.rolesHostname(roles) },
239
+ placementGroupId: parseInt(placementGroupId),
240
+ }, { ...hcloudOpts, ignoreChanges: ["image", "sshKeys"], protect }));
241
+ let dataVolume = undefined;
242
+ if (isController) {
243
+ dataVolume = pulumi.all([this.name, hostname, nodeId, server.id]).apply(([name, hostname, nodeId, serverId]) => new hcloud.Volume(`${hostname}-data`, {
244
+ name: `${hostname}-data`,
245
+ size: 10,
246
+ format: "ext4",
247
+ labels: { cluster: name, nodeId, role: k0s.Cluster.rolesHostname(roles) },
248
+ serverId: parseInt(serverId),
249
+ deleteProtection: true,
250
+ }, { ...hcloudOpts, protect }));
251
+ }
225
252
  const serverNetwork = pulumi.all([server.id, server.name]).apply(([serverId, serverName]) => {
226
253
  return new hcloud.ServerNetwork(serverName, { serverId: parseInt(serverId), subnetId: subnet.id }, hcloudOpts);
227
254
  });
228
255
  const node = pulumi
229
- .all([
230
- hostname,
231
- modules,
232
- packages,
233
- files,
234
- systemdUnits,
235
- sshAuthorizedKeys,
236
- server.ipv6Address,
237
- server.serverType,
238
- ])
239
- .apply(([hostname, modules, packages, files, systemdUnits, sshAuthorizedKeys, ipv6Address, serverType]) => {
240
- let primaryInterface = Cluster.interfacesMap.DEFAULT.primary;
241
- let privateInterfaces = Cluster.interfacesMap.DEFAULT.private;
242
- for (const [pattern, iface] of Object.entries(Cluster.interfacesMap)) {
243
- if (RegExp(pattern).exec(serverType)) {
244
- primaryInterface = iface.primary;
245
- privateInterfaces = iface.private;
246
- }
247
- }
248
- const fcosHost = new fcos.Host(hostname, {
249
- hostname,
250
- files: pulumi.all(files ?? []).apply((files) => {
251
- files.push({
252
- path: `/etc/NetworkManager/system-connections/${primaryInterface}.nmconnection`,
253
- contents: [
254
- "[connection]",
255
- "type=ethernet",
256
- `id=${primaryInterface}`,
257
- `interface-name=${primaryInterface}`,
258
- "[ipv4]",
259
- "method=auto",
260
- "ignore-auto-dns=true",
261
- "[ipv6]",
262
- "method=manual",
263
- `address1=${ipv6Address}`,
264
- `gateway=${Cluster.gatewayIPv6}`,
265
- `dns=${Cluster.dnsServers.join(";")}`,
266
- ].join("\n"),
267
- mode: 0o600,
268
- });
269
- for (const iface of privateInterfaces) {
270
- files.push({
271
- path: `/etc/NetworkManager/system-connections/${iface}.nmconnection`,
272
- contents: [
273
- "[connection]",
274
- "type=ethernet",
275
- `id=${iface}`,
276
- `interface-name=${iface}`,
277
- "[ipv4]",
278
- "method=auto",
279
- "never-default=true",
280
- "[ipv6]",
281
- "method=auto",
282
- "never-default=true",
283
- ].join("\n"),
284
- mode: 0o600,
285
- });
286
- }
287
- return files;
288
- }),
289
- systemdUnits,
290
- packages,
291
- modules,
292
- users: [{ name: "core", sshAuthorizedKeys }],
293
- sshUsers: [{ name: Cluster.sshUsername, groups: ["sudo"] }],
294
- }, emptyOpts);
295
- const roles = nodeGroup.roles ?? [];
296
- let isController = false;
297
- for (const role of roles) {
298
- if (role === "controller") {
299
- isController = true;
256
+ .all([hostname, files, links, systemdUnits, sshAuthorizedKeys, server.ipv6Address, server.serverType])
257
+ .apply(([hostname, files, links, systemdUnits, sshAuthorizedKeys, ipv6Address, serverType]) => {
258
+ const ethernetInterfaces = Cluster.ethernetInterfaceName(nodeGroup.operatingSystem, serverType);
259
+ let host;
260
+ switch (nodeGroup.operatingSystem) {
261
+ case "fcos":
262
+ host = new fcos.Host(hostname, {
263
+ hostname,
264
+ filesystems: dataVolume !== undefined
265
+ ? [
266
+ {
267
+ device: pulumi.interpolate `/dev/disk/by-id/scsi-0HC_Volume_${dataVolume.id}`,
268
+ path: "/var/lib/k0s",
269
+ format: dataVolume.format.apply((format) => format ?? "ext4"),
270
+ },
271
+ ]
272
+ : [],
273
+ files: pulumi.all(files ?? []).apply((files) => {
274
+ files.push({
275
+ path: `/etc/NetworkManager/system-connections/${ethernetInterfaces.primary}.nmconnection`,
276
+ contents: [
277
+ "[connection]",
278
+ "type=ethernet",
279
+ `id=${ethernetInterfaces.primary}`,
280
+ `interface-name=${ethernetInterfaces.primary}`,
281
+ "[ipv4]",
282
+ "method=auto",
283
+ "ignore-auto-dns=true",
284
+ "[ipv6]",
285
+ "method=manual",
286
+ `address1=${ipv6Address}`,
287
+ `gateway=${Cluster.gatewayIPv6}`,
288
+ `dns=${Cluster.dnsServers.join(";")}`,
289
+ ].join("\n"),
290
+ mode: 0o600,
291
+ });
292
+ for (const iface of ethernetInterfaces.private) {
293
+ files.push({
294
+ path: `/etc/NetworkManager/system-connections/${iface}.nmconnection`,
295
+ contents: [
296
+ "[connection]",
297
+ "type=ethernet",
298
+ `id=${iface}`,
299
+ `interface-name=${iface}`,
300
+ "[ipv4]",
301
+ "method=auto",
302
+ "never-default=true",
303
+ "[ipv6]",
304
+ "method=auto",
305
+ "never-default=true",
306
+ ].join("\n"),
307
+ mode: 0o600,
308
+ });
309
+ }
310
+ return files;
311
+ }),
312
+ links,
313
+ systemdUnits,
314
+ users: [{ name: "core", sshAuthorizedKeys }],
315
+ sshUsers: [{ name: Cluster.sshUsername, groups: ["sudo"] }],
316
+ }, emptyOpts);
300
317
  break;
301
- }
302
- }
303
- if (isController) {
304
- roles.push("etcd");
318
+ case "flatcar":
319
+ host = new flatcar.Host(hostname, {
320
+ hostname,
321
+ filesystems: dataVolume !== undefined
322
+ ? [
323
+ {
324
+ device: pulumi.interpolate `/dev/disk/by-id/scsi-0HC_Volume_${dataVolume.id}`,
325
+ path: "/var/lib/k0s",
326
+ format: dataVolume.format.apply((format) => format ?? "ext4"),
327
+ },
328
+ ]
329
+ : [],
330
+ files: pulumi.all(files ?? []).apply((files) => {
331
+ files.push({
332
+ path: `/etc/systemd/network/10-${ethernetInterfaces.primary}.network`,
333
+ contents: [
334
+ "[Match]",
335
+ `Name=${ethernetInterfaces.primary}`,
336
+ "[Link]",
337
+ "RequiredForOnline=routable",
338
+ "[Network]",
339
+ "DHCP=yes",
340
+ `Address=${ipv6Address}/64`,
341
+ `Gateway=${Cluster.gatewayIPv6}`,
342
+ ...Cluster.dnsServers.map((dns) => `DNS=${dns}`),
343
+ ].join("\n"),
344
+ mode: 0o644,
345
+ });
346
+ for (const iface of ethernetInterfaces.private) {
347
+ files.push({
348
+ path: `/etc/systemd/network/10-${iface}.network`,
349
+ contents: ["[Match]", `Name=${iface}`, "[Network]", "DHCP=yes", "IPv6AcceptRA=true"].join("\n"),
350
+ mode: 0o644,
351
+ });
352
+ }
353
+ return files;
354
+ }),
355
+ links,
356
+ systemdUnits,
357
+ users: [{ name: "core", sshAuthorizedKeys }],
358
+ sshUsers: [{ name: Cluster.sshUsername, groups: ["sudo"] }],
359
+ }, emptyOpts);
360
+ break;
361
+ default:
362
+ throw new Error(`Unsupported operating system ${nodeGroup.operatingSystem}`);
305
363
  }
306
364
  return {
307
365
  id: server.id,
@@ -313,7 +371,7 @@ export class Cluster extends ComponentResource {
313
371
  labels: nodeGroup.labels ?? {},
314
372
  taints: nodeGroup.taints ?? [],
315
373
  username: Cluster.sshUsername,
316
- privateKey: fcosHost.sshPrivateKeys.apply((sshPrivateKeys) => {
374
+ privateKey: host.sshPrivateKeys.apply((sshPrivateKeys) => {
317
375
  for (const username in sshPrivateKeys) {
318
376
  if (username === Cluster.sshUsername) {
319
377
  // eslint-disable-next-line security/detect-object-injection
@@ -322,13 +380,23 @@ export class Cluster extends ComponentResource {
322
380
  }
323
381
  throw new Error(`No private key found for user ${Cluster.sshUsername}`);
324
382
  }),
325
- fcosHost,
383
+ operatingSystem: nodeGroup.operatingSystem,
384
+ ignitionConfig: host.ignitionConfig,
326
385
  disabled: nodeGroup.disabled ?? false,
327
386
  };
328
387
  });
329
388
  results.push({
330
389
  node,
331
- depends: this.configureFcosNode(sshPrivateKey, server, node),
390
+ depends: pulumi.all([node.operatingSystem]).apply(([os]) => {
391
+ switch (os) {
392
+ case "fcos":
393
+ return this.configureFcosNode(sshPrivateKey, server, node);
394
+ case "flatcar":
395
+ return this.configureFlatcarNode(sshPrivateKey, server, node);
396
+ default:
397
+ throw new Error(`Unsupported operating system ${os}`);
398
+ }
399
+ }),
332
400
  });
333
401
  }
334
402
  }
@@ -348,23 +416,18 @@ export class Cluster extends ComponentResource {
348
416
  const fcosInstallScript = new command.remote.CopyToRemote(`${nodeName}-fcos-install-script`, {
349
417
  connection,
350
418
  source: new pulumi.asset.FileAsset(path.join(path.dirname(url.fileURLToPath(import.meta.url)), "assets", "fcos-install.sh")),
351
- remotePath: Cluster.fcosInstallScriptPathRemote,
419
+ remotePath: Cluster.installScriptPathRemote,
352
420
  }, { ...emptyOpts, dependsOn: server, ignoreChanges: ["connection", "source", "remotePath"] });
353
421
  const fcosConfigFile = new command.remote.CopyToRemote(`${nodeName}-fcos-config`, {
354
422
  connection,
355
- source: node.fcosHost.ignitionConfig.apply((ignitionConfig) => {
356
- const filename = `/tmp/${crypto.createHash("sha1").update(ignitionConfig).digest("hex")}`;
357
- // eslint-disable-next-line security/detect-non-literal-fs-filename
358
- fs.writeFileSync(filename, ignitionConfig, { mode: 0o600 });
359
- return new pulumi.asset.FileAsset(filename);
360
- }),
361
- remotePath: Cluster.fcosConfigPathRemote,
423
+ source: this.fileAssetFromString(node.ignitionConfig),
424
+ remotePath: Cluster.ignitionConfigPathRemote,
362
425
  }, { ...emptyOpts, dependsOn: server, ignoreChanges: ["connection", "source", "remotePath"] });
363
426
  const fcosInstall = new command.remote.Command(`${nodeName}-fcos-install`, {
364
427
  connection,
365
428
  create: [
366
- `chmod +x ${Cluster.fcosInstallScriptPathRemote}`,
367
- `${Cluster.fcosInstallScriptPathRemote} /dev/sda ${Cluster.fcosConfigPathRemote}`,
429
+ `chmod +x ${Cluster.installScriptPathRemote}`,
430
+ `${Cluster.installScriptPathRemote} /dev/sda ${Cluster.ignitionConfigPathRemote}`,
368
431
  ].join(" && "),
369
432
  }, { ...emptyOpts, dependsOn: [fcosInstallScript, fcosConfigFile], ignoreChanges: ["connection", "create"] });
370
433
  return new command.remote.Command(`${nodeName}-fcos-up`, {
@@ -379,5 +442,80 @@ export class Cluster extends ComponentResource {
379
442
  }, { ...emptyOpts, dependsOn: fcosInstall, ignoreChanges: ["connection", "create"] });
380
443
  });
381
444
  }
445
+ configureFlatcarNode(sshPrivateKey, server, node) {
446
+ const emptyOpts = this.opts();
447
+ return pulumi.all([server.name, server.ipv4Address, node]).apply(([nodeName, ipv4Address, node]) => {
448
+ const connection = {
449
+ host: ipv4Address,
450
+ privateKey: sshPrivateKey,
451
+ user: Cluster.rescueSshUsername,
452
+ perDialTimeout: 10,
453
+ dialErrorLimit: 30,
454
+ };
455
+ const flatcarInstallScript = new command.remote.CopyToRemote(`${nodeName}-flatcar-install-script`, {
456
+ connection,
457
+ source: new pulumi.asset.FileAsset(path.join(path.dirname(url.fileURLToPath(import.meta.url)), "assets", "flatcar-install.sh")),
458
+ remotePath: Cluster.installScriptPathRemote,
459
+ }, { ...emptyOpts, dependsOn: server, ignoreChanges: ["connection", "source", "remotePath"] });
460
+ const flatcarConfigFile = new command.remote.CopyToRemote(`${nodeName}-flatcar-config`, {
461
+ connection,
462
+ source: this.fileAssetFromString(node.ignitionConfig),
463
+ remotePath: Cluster.ignitionConfigPathRemote,
464
+ }, { ...emptyOpts, dependsOn: server, ignoreChanges: ["connection", "source", "remotePath"] });
465
+ const flatcarInstall = new command.remote.Command(`${nodeName}-flatcar-install`, {
466
+ connection,
467
+ create: [
468
+ `chmod +x ${Cluster.installScriptPathRemote}`,
469
+ `${Cluster.installScriptPathRemote} /dev/sda ${Cluster.ignitionConfigPathRemote}`,
470
+ ].join(" && "),
471
+ }, { ...emptyOpts, dependsOn: [flatcarInstallScript, flatcarConfigFile], ignoreChanges: ["connection", "create"] });
472
+ return new command.remote.Command(`${nodeName}-flatcar-up`, {
473
+ connection: {
474
+ host: ipv4Address,
475
+ privateKey: node.privateKey,
476
+ user: Cluster.sshUsername,
477
+ perDialTimeout: 10,
478
+ dialErrorLimit: 30,
479
+ },
480
+ create: "echo up",
481
+ }, { ...emptyOpts, dependsOn: flatcarInstall, ignoreChanges: ["connection", "create"] });
482
+ });
483
+ }
484
+ fileAssetFromString(content) {
485
+ return pulumi.all([content]).apply(([content]) => {
486
+ const filename = `/tmp/${crypto.createHash("sha1").update(content).digest("hex")}`;
487
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
488
+ fs.writeFileSync(filename, content, { mode: 0o600 });
489
+ return new pulumi.asset.FileAsset(filename);
490
+ });
491
+ }
492
+ static ethernetInterfaceName(os, serverType) {
493
+ let primaryInterface;
494
+ let privateInterfaces;
495
+ switch (os) {
496
+ case "fcos":
497
+ primaryInterface = Cluster.interfacesMap.fcos.DEFAULT.primary;
498
+ privateInterfaces = Cluster.interfacesMap.fcos.DEFAULT.private;
499
+ for (const [pattern, iface] of Object.entries(Cluster.interfacesMap.fcos)) {
500
+ if (RegExp(pattern).exec(serverType)) {
501
+ primaryInterface = iface.primary;
502
+ privateInterfaces = iface.private;
503
+ }
504
+ }
505
+ return { primary: primaryInterface, private: privateInterfaces };
506
+ case "flatcar":
507
+ primaryInterface = Cluster.interfacesMap.flatcar.DEFAULT.primary;
508
+ privateInterfaces = Cluster.interfacesMap.flatcar.DEFAULT.private;
509
+ for (const [pattern, iface] of Object.entries(Cluster.interfacesMap.flatcar)) {
510
+ if (RegExp(pattern).exec(serverType)) {
511
+ primaryInterface = iface.primary;
512
+ privateInterfaces = iface.private;
513
+ }
514
+ }
515
+ return { primary: primaryInterface, private: privateInterfaces };
516
+ default:
517
+ throw new Error(`Unsupported operating system ${os}`);
518
+ }
519
+ }
382
520
  }
383
521
  //# sourceMappingURL=cluster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../lib/hcloud/cluster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../lib/hcloud/cluster.ts"],"names":[],"mappings":"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"}