@ydkn/pulumi-components 0.8.8 → 0.8.9

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 (216) hide show
  1. package/index.d.ts +7 -1
  2. package/index.js +7 -1
  3. package/index.js.map +1 -1
  4. package/lib/alpine/assets/init.sh +0 -0
  5. package/lib/alpine/config.d.ts +19 -0
  6. package/lib/alpine/config.js +194 -0
  7. package/lib/alpine/config.js.map +1 -0
  8. package/lib/alpine/deployment.js +1 -1
  9. package/lib/alpine/deployment.js.map +1 -1
  10. package/lib/alpine/host.d.ts +25 -0
  11. package/lib/alpine/host.js +96 -0
  12. package/lib/alpine/host.js.map +1 -0
  13. package/lib/alpine/index.d.ts +3 -1
  14. package/lib/alpine/index.js +3 -1
  15. package/lib/alpine/index.js.map +1 -1
  16. package/lib/avahi/deployment.d.ts +2 -0
  17. package/lib/avahi/deployment.js +43 -19
  18. package/lib/avahi/deployment.js.map +1 -1
  19. package/lib/avahi/service.d.ts +2 -2
  20. package/lib/avahi/service.js +9 -7
  21. package/lib/avahi/service.js.map +1 -1
  22. package/lib/certManager/certificate.js +1 -1
  23. package/lib/certManager/certificate.js.map +1 -1
  24. package/lib/certManager/issuer.d.ts +1 -1
  25. package/lib/certManager/operator.js +8 -8
  26. package/lib/certManager/operator.js.map +1 -1
  27. package/lib/cilium/deployment.d.ts +33 -0
  28. package/lib/cilium/deployment.js +112 -0
  29. package/lib/cilium/deployment.js.map +1 -0
  30. package/lib/cilium/index.d.ts +5 -0
  31. package/lib/cilium/index.js +6 -0
  32. package/lib/cilium/index.js.map +1 -0
  33. package/lib/cilium/l2AnnouncementPolicy.d.ts +22 -0
  34. package/lib/cilium/l2AnnouncementPolicy.js +25 -0
  35. package/lib/cilium/l2AnnouncementPolicy.js.map +1 -0
  36. package/lib/cilium/loadBalancerIPPool.d.ts +22 -0
  37. package/lib/cilium/loadBalancerIPPool.js +18 -0
  38. package/lib/cilium/loadBalancerIPPool.js.map +1 -0
  39. package/lib/cilium/localRedirectPolicy.d.ts +40 -0
  40. package/lib/cilium/localRedirectPolicy.js +13 -0
  41. package/lib/cilium/localRedirectPolicy.js.map +1 -0
  42. package/lib/cups/avahiService.d.ts +1 -1
  43. package/lib/cups/avahiService.js +1 -1
  44. package/lib/cups/avahiService.js.map +1 -1
  45. package/lib/cups/deployment.d.ts +1 -1
  46. package/lib/cups/deployment.js +3 -3
  47. package/lib/cups/deployment.js.map +1 -1
  48. package/lib/dashy/deployment.d.ts +35 -0
  49. package/lib/dashy/deployment.js +78 -0
  50. package/lib/dashy/deployment.js.map +1 -0
  51. package/lib/dashy/index.d.ts +2 -0
  52. package/lib/dashy/index.js +3 -0
  53. package/lib/dashy/index.js.map +1 -0
  54. package/lib/dhcpd/deployment.d.ts +6 -6
  55. package/lib/dhcpd/deployment.js +40 -30
  56. package/lib/dhcpd/deployment.js.map +1 -1
  57. package/lib/externalDns/operator.d.ts +2 -2
  58. package/lib/externalDns/operator.js +5 -16
  59. package/lib/externalDns/operator.js.map +1 -1
  60. package/lib/fcos/assets/install-ready.service +12 -0
  61. package/lib/fcos/assets/install-run.service +14 -0
  62. package/lib/fcos/assets/rpm-ostree-install.sh +0 -0
  63. package/lib/fcos/config.d.ts +2 -5
  64. package/lib/fcos/config.js +44 -34
  65. package/lib/fcos/config.js.map +1 -1
  66. package/lib/fcos/host.d.ts +8 -12
  67. package/lib/fcos/host.js +45 -39
  68. package/lib/fcos/host.js.map +1 -1
  69. package/lib/fcos/index.d.ts +3 -3
  70. package/lib/fcos/index.js.map +1 -1
  71. package/lib/flatcar/assets/install-ready.service +12 -0
  72. package/lib/flatcar/assets/install-run.service +14 -0
  73. package/lib/flatcar/config.d.ts +3 -5
  74. package/lib/flatcar/config.js +44 -42
  75. package/lib/flatcar/config.js.map +1 -1
  76. package/lib/flatcar/host.d.ts +8 -12
  77. package/lib/flatcar/host.js +39 -29
  78. package/lib/flatcar/host.js.map +1 -1
  79. package/lib/flatcar/index.d.ts +3 -3
  80. package/lib/flatcar/index.js.map +1 -1
  81. package/lib/gitlab/project.js +4 -4
  82. package/lib/gitlab/project.js.map +1 -1
  83. package/lib/grafana/alloy.d.ts +1 -1
  84. package/lib/grafana/alloy.js +10 -12
  85. package/lib/grafana/alloy.js.map +1 -1
  86. package/lib/grafana/deployment.js +2 -2
  87. package/lib/grafana/deployment.js.map +1 -1
  88. package/lib/hcloud/assets/alpine-install.sh +45 -0
  89. package/lib/hcloud/assets/fcos-install.sh +13 -6
  90. package/lib/hcloud/assets/flatcar-install.sh +2 -2
  91. package/lib/hcloud/cluster.d.ts +9 -2
  92. package/lib/hcloud/cluster.js +273 -117
  93. package/lib/hcloud/cluster.js.map +1 -1
  94. package/lib/homeAssistant/deployment.d.ts +38 -0
  95. package/lib/homeAssistant/deployment.js +183 -0
  96. package/lib/homeAssistant/deployment.js.map +1 -0
  97. package/lib/homeAssistant/index.d.ts +2 -0
  98. package/lib/homeAssistant/index.js +3 -0
  99. package/lib/homeAssistant/index.js.map +1 -0
  100. package/lib/jellyfin/deployment.d.ts +1 -1
  101. package/lib/jellyfin/deployment.js +2 -5
  102. package/lib/jellyfin/deployment.js.map +1 -1
  103. package/lib/k0s/cluster.js +9 -4
  104. package/lib/k0s/cluster.js.map +1 -1
  105. package/lib/kubernetes/assets/crashed-cleanup.sh +0 -0
  106. package/lib/kubernetes/crashedCleanup.js +19 -2
  107. package/lib/kubernetes/crashedCleanup.js.map +1 -1
  108. package/lib/kubernetes/index.d.ts +2 -1
  109. package/lib/kubernetes/index.js +2 -1
  110. package/lib/kubernetes/index.js.map +1 -1
  111. package/lib/kubernetes/interfaceBridge/assets/bridge.sh +43 -0
  112. package/lib/kubernetes/interfaceBridge/bridge.d.ts +6 -0
  113. package/lib/kubernetes/interfaceBridge/bridge.js +26 -0
  114. package/lib/kubernetes/interfaceBridge/bridge.js.map +1 -0
  115. package/lib/kubernetes/interfaceBridge/index.d.ts +2 -0
  116. package/lib/kubernetes/interfaceBridge/index.js +3 -0
  117. package/lib/kubernetes/interfaceBridge/index.js.map +1 -0
  118. package/lib/kubernetes/transformations/removeCrdDescriptions.js.map +1 -1
  119. package/lib/kubernetes/v1/secureIngress.js.map +1 -1
  120. package/lib/loki/deployment.js +8 -1
  121. package/lib/loki/deployment.js.map +1 -1
  122. package/lib/metallb/controller.d.ts +3 -0
  123. package/lib/metallb/controller.js +2 -0
  124. package/lib/metallb/controller.js.map +1 -1
  125. package/lib/mongodb/cluster.js +1 -1
  126. package/lib/mongodb/cluster.js.map +1 -1
  127. package/lib/musicAssistant/deployment.d.ts +26 -0
  128. package/lib/musicAssistant/deployment.js +77 -0
  129. package/lib/musicAssistant/deployment.js.map +1 -0
  130. package/lib/musicAssistant/index.d.ts +2 -0
  131. package/lib/musicAssistant/index.js +3 -0
  132. package/lib/musicAssistant/index.js.map +1 -0
  133. package/lib/netbird/agent.js +5 -4
  134. package/lib/netbird/agent.js.map +1 -1
  135. package/lib/netbird/assets/nftables.sh +0 -0
  136. package/lib/netbird/management.js +15 -0
  137. package/lib/netbird/management.js.map +1 -1
  138. package/lib/node/config.d.ts +37 -0
  139. package/lib/node/config.js +2 -0
  140. package/lib/node/config.js.map +1 -0
  141. package/lib/node/index.d.ts +2 -2
  142. package/lib/node/index.js.map +1 -1
  143. package/lib/node/node.d.ts +1 -1
  144. package/lib/oauth2Proxy/deployment.d.ts +20 -0
  145. package/lib/oauth2Proxy/deployment.js +56 -0
  146. package/lib/oauth2Proxy/deployment.js.map +1 -0
  147. package/lib/oauth2Proxy/index.d.ts +2 -0
  148. package/lib/oauth2Proxy/index.js +3 -0
  149. package/lib/oauth2Proxy/index.js.map +1 -0
  150. package/lib/paperless/deployment.d.ts +36 -0
  151. package/lib/paperless/deployment.js +164 -0
  152. package/lib/paperless/deployment.js.map +1 -0
  153. package/lib/paperless/index.d.ts +2 -0
  154. package/lib/paperless/index.js +3 -0
  155. package/lib/paperless/index.js.map +1 -0
  156. package/lib/plex/mediaServer.d.ts +1 -1
  157. package/lib/plex/mediaServer.js +3 -3
  158. package/lib/plex/mediaServer.js.map +1 -1
  159. package/lib/postgresql/cluster.js +1 -1
  160. package/lib/postgresql/cluster.js.map +1 -1
  161. package/lib/qbittorrent/deployment.d.ts +65 -0
  162. package/lib/qbittorrent/deployment.js +410 -0
  163. package/lib/qbittorrent/deployment.js.map +1 -0
  164. package/lib/qbittorrent/index.d.ts +2 -0
  165. package/lib/qbittorrent/index.js +3 -0
  166. package/lib/qbittorrent/index.js.map +1 -0
  167. package/lib/raspberrypi/cluster.d.ts +5 -2
  168. package/lib/raspberrypi/cluster.js +110 -76
  169. package/lib/raspberrypi/cluster.js.map +1 -1
  170. package/lib/redis/standalone.js +2 -2
  171. package/lib/rook/blockPool.js +1 -0
  172. package/lib/rook/blockPool.js.map +1 -1
  173. package/lib/rook/cluster.d.ts +0 -2
  174. package/lib/rook/cluster.js +10 -35
  175. package/lib/rook/cluster.js.map +1 -1
  176. package/lib/rook/filesystem.js +1 -1
  177. package/lib/rook/filesystem.js.map +1 -1
  178. package/lib/rook/operator.js +12 -2
  179. package/lib/rook/operator.js.map +1 -1
  180. package/lib/rook/sharedFilesystem.js +1 -0
  181. package/lib/rook/sharedFilesystem.js.map +1 -1
  182. package/lib/samba/avahiService.d.ts +1 -1
  183. package/lib/samba/avahiService.js +1 -1
  184. package/lib/samba/avahiService.js.map +1 -1
  185. package/lib/samba/dc.js +26 -0
  186. package/lib/samba/dc.js.map +1 -1
  187. package/lib/samba/deployment.d.ts +2 -1
  188. package/lib/samba/deployment.js +4 -5
  189. package/lib/samba/deployment.js.map +1 -1
  190. package/lib/torproxy/deployment.js +2 -3
  191. package/lib/torproxy/deployment.js.map +1 -1
  192. package/lib/traefik/controller.d.ts +12 -0
  193. package/lib/traefik/controller.js +31 -1
  194. package/lib/traefik/controller.js.map +1 -1
  195. package/lib/transmission/deployment.d.ts +5 -3
  196. package/lib/transmission/deployment.js +27 -11
  197. package/lib/transmission/deployment.js.map +1 -1
  198. package/lib/ubuntu/assets/init.sh +0 -0
  199. package/lib/ubuntu/deployment.js +1 -1
  200. package/lib/ubuntu/deployment.js.map +1 -1
  201. package/lib/unifi/index.d.ts +2 -2
  202. package/lib/unifi/index.js +2 -2
  203. package/lib/unifi/index.js.map +1 -1
  204. package/lib/unifi/{networkServer.d.ts → osServer.d.ts} +7 -16
  205. package/lib/unifi/{networkServer.js → osServer.js} +90 -140
  206. package/lib/unifi/osServer.js.map +1 -0
  207. package/lib/utils/args.js +1 -1
  208. package/lib/utils/args.js.map +1 -1
  209. package/lib/velero/operator.d.ts +2 -2
  210. package/lib/velero/operator.js +6 -6
  211. package/lib/velero/operator.js.map +1 -1
  212. package/lib/zitadel/deployment.js +1 -1
  213. package/lib/zitadel/deployment.js.map +1 -1
  214. package/package.json +31 -31
  215. package/lib/unifi/assets/init-mongo.sh +0 -19
  216. package/lib/unifi/networkServer.js.map +0 -1
@@ -0,0 +1,410 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as random from "@pulumi/random";
3
+ import * as k8s from "@pulumi/kubernetes";
4
+ import * as crypto from "crypto";
5
+ import { ComponentResource } from "../common/index.js";
6
+ import * as kubernetes from "../kubernetes/index.js";
7
+ import * as localPathProvisioner from "../localPathProvisioner/index.js";
8
+ import * as hostPathProvisioner from "../hostPathProvisioner/index.js";
9
+ import * as rook from "../rook/index.js";
10
+ import * as traefik from "../traefik/index.js";
11
+ export class QBittorrent extends ComponentResource {
12
+ static defaultVersion = "latest";
13
+ static webUIPort = 8080;
14
+ static torrentingPort = 6881;
15
+ static sharedFilesystemsConfigs;
16
+ credentials;
17
+ settings;
18
+ configVolumeClaim;
19
+ deployment;
20
+ service;
21
+ middleware;
22
+ ingress;
23
+ username;
24
+ password;
25
+ namespace;
26
+ internalHostname;
27
+ /**
28
+ * Create a new qBittorrent resource.
29
+ * @param name The name of qBittorrent resource.
30
+ * @param args A bag of arguments to control the qBittorrent creation.
31
+ * @param opts A bag of options that control this resource's behavior.
32
+ */
33
+ constructor(name, args, opts) {
34
+ super("qbittorrent", name, args, opts);
35
+ args.version ??= QBittorrent.defaultVersion;
36
+ const k8sOpts = this.opts(k8s.Provider);
37
+ opts = this.opts();
38
+ this.username = pulumi.secret("qbittorrent");
39
+ this.password = pulumi.secret(new random.RandomPassword("password", { length: 24, special: false }, opts).result);
40
+ this.namespace = args.namespace
41
+ ? pulumi.output(args.namespace)
42
+ : new k8s.core.v1.Namespace(name, { metadata: { name } }, k8sOpts).metadata.name;
43
+ const metadata = {
44
+ name,
45
+ namespace: this.namespace,
46
+ labels: {
47
+ "app.kubernetes.io/name": "qbittorrent",
48
+ "app.kubernetes.io/component": "qbittorrent",
49
+ "app.kubernetes.io/instance": name,
50
+ },
51
+ };
52
+ this.credentials = new kubernetes.v1.Secret(`${name}-credentials`, {
53
+ metadata: { ...metadata, name: pulumi.interpolate `${name}-credentials` },
54
+ stringData: {
55
+ username: this.username,
56
+ password: this.password,
57
+ },
58
+ }, k8sOpts);
59
+ this.settings = new kubernetes.v1.Secret(`${name}-settings`, {
60
+ metadata: { ...metadata, name: pulumi.interpolate `${name}-settings` },
61
+ stringData: {
62
+ "qBittorrent.conf": pulumi
63
+ .all([this.username, this.password, args.blocklist])
64
+ .apply(([username, password, blocklist]) => [
65
+ `[Application]`,
66
+ `FileLogger\Enabled=false`,
67
+ `[AutoRun]`,
68
+ `enabled=false`,
69
+ `[BitTorrent]`,
70
+ `Session\AddExtensionToIncompleteFiles=true`,
71
+ `Session\AddTorrentStopped=true`,
72
+ `Session\AlternativeGlobalDLSpeedLimit=11`,
73
+ `Session\AlternativeGlobalUPSpeedLimit=11`,
74
+ `Session\AnonymousModeEnabled=true`,
75
+ `Session\BlockPeersOnPrivilegedPorts=true`,
76
+ `Session\DefaultSavePath=/downloads/`,
77
+ `Session\DisableAutoTMMTriggers\CategoryChanged=true`,
78
+ `Session\Encryption=1`,
79
+ `Session\ExcludedFileNames=`,
80
+ `Session\GlobalDLSpeedLimit=1`,
81
+ `Session\GlobalUPSpeedLimit=1`,
82
+ `Session\IPFilter=/tmp/blocklist.dat`,
83
+ `Session\IPFilteringEnabled=true`,
84
+ `Session\IgnoreLimitsOnLAN=true`,
85
+ `Session\IncludeOverheadInLimits=true`,
86
+ `Session\MaxActiveDownloads=4`,
87
+ `Session\MaxActiveTorrents=10`,
88
+ `Session\MaxActiveUploads=2`,
89
+ `Session\MaxConnections=128`,
90
+ `Session\MaxConnectionsPerTorrent=64`,
91
+ `Session\PerformanceWarning=true`,
92
+ `Session\Port=6881`,
93
+ `Session\QueueingSystemEnabled=true`,
94
+ `Session\SSL\Port=33313`,
95
+ `Session\ShareLimitAction=Stop`,
96
+ `Session\TempPath=/downloads/incomplete/`,
97
+ `[Core]`,
98
+ `AutoDeleteAddedTorrentFile=IfAdded`,
99
+ `[LegalNotice]`,
100
+ `Accepted=true`,
101
+ `[Meta]`,
102
+ `MigrationVersion=8`,
103
+ `[Network]`,
104
+ `PortForwardingEnabled=true`,
105
+ `[Preferences]`,
106
+ `Connection\PortRangeMin=6881`,
107
+ `Connection\UPnP=false`,
108
+ `Downloads\SavePath=/downloads/`,
109
+ `Downloads\TempPath=/downloads/incomplete/`,
110
+ `General\Locale=en`,
111
+ `MailNotification\req_auth=true`,
112
+ `WebUI\Address=*`,
113
+ `WebUI\AuthSubnetWhitelist=@Invalid()`,
114
+ `WebUI\LocalHostAuth=false`,
115
+ //`WebUI\Password_PBKDF2="@ByteArray(mQmfcCac6aE1XK0gt1gHDw==:90pApzgX0EKyUxhsOXawz+irtIZCyYhBX8j0RFy7oT0MHWDEqI0DjkxbZBB1bkcLpxoLo94kNMxPHnWdyD+UUg==)"`,
116
+ `WebUI\ServerDomains=*`,
117
+ `WebUI\Username=${username}`,
118
+ ].join("\n")),
119
+ },
120
+ }, k8sOpts);
121
+ const configVolumeName = pulumi.interpolate `${name}-config`;
122
+ this.configVolumeClaim = new k8s.core.v1.PersistentVolumeClaim(`${name}-config`, {
123
+ metadata: { ...metadata, name: configVolumeName },
124
+ spec: {
125
+ storageClassName: args.storageClassName,
126
+ accessModes: ["ReadWriteOnce"],
127
+ resources: { requests: { storage: "256Mi" } },
128
+ },
129
+ }, { ...k8sOpts, protect: args.protect });
130
+ const volumes = pulumi
131
+ .all([args.pvcVolumes, args.nfsVolumes, args.sharedFilesystemVolumes, QBittorrent.sharedFilesystemsConfigs ?? {}])
132
+ .apply(([pvcVolumes, nfsVolumes, sharedFilesystemVolumes, sharedFilesystemsConfigs]) => {
133
+ return pulumi.all(pvcVolumes ?? []).apply((pvcVolumes) => {
134
+ return pulumi.all(nfsVolumes ?? []).apply((nfsVolumes) => {
135
+ return pulumi.all(sharedFilesystemVolumes ?? []).apply((sharedFilesystemVolumes) => {
136
+ const volumes = [];
137
+ for (const pvcVolume of pvcVolumes) {
138
+ const pvc = new k8s.core.v1.PersistentVolumeClaim(`${name}-pvc-${pvcVolume.id}`, {
139
+ metadata: { ...metadata, name: pvcVolume.id },
140
+ spec: {
141
+ storageClassName: pvcVolume.storageClassName,
142
+ accessModes: pvcVolume.accessModes ?? ["ReadWriteOnce"],
143
+ resources: { requests: { storage: pvcVolume.size ?? "10Gi" } },
144
+ },
145
+ }, k8sOpts);
146
+ volumes.push({
147
+ id: pulumi.output(pvcVolume.id),
148
+ persistentVolumeClaimName: pvc.metadata.name,
149
+ });
150
+ }
151
+ for (const nfsVolume of nfsVolumes) {
152
+ const volume = kubernetes.v1.NfsVolume.fromConfig(`${name}-nfs-${nfsVolume.id}`, { metadata: { ...metadata, name: nfsVolume.id }, config: nfsVolume }, opts);
153
+ volumes.push({
154
+ id: pulumi.output(nfsVolume.id),
155
+ persistentVolumeClaimName: volume.persistentVolumeClaim.metadata.name,
156
+ });
157
+ }
158
+ for (const sharedFilesystemVolume of sharedFilesystemVolumes) {
159
+ const filesystem = sharedFilesystemsConfigs[sharedFilesystemVolume.id];
160
+ if (filesystem === undefined) {
161
+ continue;
162
+ }
163
+ let persistentVolumeClaim;
164
+ switch (filesystem.type) {
165
+ case rook.SharedFilesystemType: {
166
+ const rookFilesystem = filesystem;
167
+ persistentVolumeClaim = new rook.SharedFilesystem(`${name}-fs-${sharedFilesystemVolume.id}`, rook.sharedFilesystemArgsFromSharedFilesystemConfig(rookFilesystem, {
168
+ ...metadata,
169
+ name: sharedFilesystemVolume.id,
170
+ }), opts).persistentVolumeClaim;
171
+ break;
172
+ }
173
+ case localPathProvisioner.SharedFilesystemType: {
174
+ const localPathProvisionerFilesystem = filesystem;
175
+ persistentVolumeClaim = new localPathProvisioner.SharedFilesystem(`${name}-fs-${sharedFilesystemVolume.id}`, localPathProvisioner.sharedFilesystemArgsFromSharedFilesystemConfig(localPathProvisionerFilesystem, {
176
+ ...metadata,
177
+ name: sharedFilesystemVolume.id,
178
+ }), opts).persistentVolumeClaim;
179
+ break;
180
+ }
181
+ case hostPathProvisioner.SharedFilesystemType: {
182
+ const hostPathProvisionerFilesystem = filesystem;
183
+ persistentVolumeClaim = new hostPathProvisioner.SharedFilesystem(`${name}-fs-${sharedFilesystemVolume.id}`, hostPathProvisioner.sharedFilesystemArgsFromSharedFilesystemConfig(hostPathProvisionerFilesystem, {
184
+ ...metadata,
185
+ name: sharedFilesystemVolume.id,
186
+ }), opts).persistentVolumeClaim;
187
+ break;
188
+ }
189
+ }
190
+ if (persistentVolumeClaim !== undefined) {
191
+ volumes.push({
192
+ id: pulumi.output(sharedFilesystemVolume.id),
193
+ persistentVolumeClaimName: persistentVolumeClaim.metadata.name,
194
+ subPath: sharedFilesystemVolume.filesystemSubPath
195
+ ? pulumi.output(sharedFilesystemVolume.filesystemSubPath)
196
+ : undefined,
197
+ });
198
+ }
199
+ }
200
+ return volumes;
201
+ });
202
+ });
203
+ });
204
+ });
205
+ const config = pulumi.all([volumes]).apply(([volumes]) => {
206
+ const deploymentVolumes = [];
207
+ const deploymentVolumeMounts = [];
208
+ for (const volume of volumes) {
209
+ const volumeName = crypto.createHash("sha1").update(volume.id).digest("hex");
210
+ deploymentVolumes.push({
211
+ name: volumeName,
212
+ persistentVolumeClaim: { claimName: volume.persistentVolumeClaimName },
213
+ });
214
+ deploymentVolumeMounts.push({
215
+ name: volumeName,
216
+ mountPath: pulumi.interpolate `/mnt/${volume.id}`,
217
+ subPath: volume.subPath,
218
+ });
219
+ }
220
+ return { volumes: deploymentVolumes, volumeMounts: deploymentVolumeMounts };
221
+ });
222
+ this.deployment = new k8s.apps.v1.Deployment(name, {
223
+ metadata,
224
+ spec: {
225
+ selector: { matchLabels: metadata.labels },
226
+ strategy: { type: "Recreate" },
227
+ replicas: 1,
228
+ template: {
229
+ metadata: {
230
+ labels: metadata.labels,
231
+ annotations: { "backup.velero.io/backup-volumes": "config" },
232
+ },
233
+ spec: {
234
+ nodeSelector: args.nodeSelector,
235
+ initContainers: [
236
+ {
237
+ name: "permissions",
238
+ image: "busybox:latest",
239
+ command: ["/bin/sh", "-c", pulumi.interpolate `chown -R ${args.uid}:${args.gid} /config`],
240
+ resources: {
241
+ requests: { memory: "8Mi" },
242
+ limits: { memory: "12Mi" },
243
+ },
244
+ volumeMounts: [{ name: "config", mountPath: "/config" }],
245
+ },
246
+ {
247
+ name: "settings",
248
+ image: "busybox:latest",
249
+ command: ["/bin/sh", "-c", "cp /settings/qBittorrent.conf /config/qBittorrent/qBittorrent.conf"],
250
+ resources: {
251
+ requests: { memory: "8Mi" },
252
+ limits: { memory: "12Mi" },
253
+ },
254
+ volumeMounts: [
255
+ { name: "settings", mountPath: "/settings" },
256
+ { name: "config", mountPath: "/config" },
257
+ ],
258
+ },
259
+ ],
260
+ containers: [
261
+ {
262
+ name: "qbittorrent",
263
+ image: pulumi.interpolate `lscr.io/linuxserver/qbittorrent:${args.version}`,
264
+ imagePullPolicy: "Always",
265
+ env: [
266
+ { name: "PUID", value: pulumi.interpolate `${args.uid}` },
267
+ { name: "PGID", value: pulumi.interpolate `${args.gid}` },
268
+ ],
269
+ ports: [{ name: "webui", containerPort: QBittorrent.webUIPort, protocol: "TCP" }],
270
+ readinessProbe: {
271
+ periodSeconds: 10,
272
+ timeoutSeconds: 2,
273
+ successThreshold: 2,
274
+ failureThreshold: 4,
275
+ tcpSocket: { port: "webui" },
276
+ },
277
+ livenessProbe: {
278
+ periodSeconds: 30,
279
+ timeoutSeconds: 2,
280
+ successThreshold: 1,
281
+ failureThreshold: 10,
282
+ tcpSocket: { port: "webui" },
283
+ },
284
+ resources: {
285
+ requests: { memory: "512Mi" },
286
+ limits: { memory: "640Mi" },
287
+ },
288
+ volumeMounts: pulumi.all([config]).apply(([config]) => {
289
+ return config.volumeMounts.concat([
290
+ { name: "config", mountPath: "/config", subPath: "qbittorrent" },
291
+ ]);
292
+ }),
293
+ },
294
+ {
295
+ name: "flood",
296
+ image: "jesec/flood:latest",
297
+ imagePullPolicy: "Always",
298
+ securityContext: { runAsUser: args.uid, runAsGroup: args.gid },
299
+ ports: [{ name: "http", containerPort: 3001, protocol: "TCP" }],
300
+ env: [
301
+ { name: "HOME", value: "/config" },
302
+ { name: "FLOOD_OPTION_auth", value: "none" },
303
+ { name: "FLOOD_OPTION_port", value: "3001" },
304
+ {
305
+ name: "FLOOD_OPTION_qburl",
306
+ value: pulumi.interpolate `http://localhost:${QBittorrent.webUIPort}/`,
307
+ },
308
+ {
309
+ name: "FLOOD_OPTION_qbuser",
310
+ valueFrom: { secretKeyRef: { name: this.credentials.metadata.name, key: "username" } },
311
+ },
312
+ {
313
+ name: "FLOOD_OPTION_qbpass",
314
+ valueFrom: { secretKeyRef: { name: this.credentials.metadata.name, key: "password" } },
315
+ },
316
+ ],
317
+ readinessProbe: {
318
+ periodSeconds: 10,
319
+ timeoutSeconds: 2,
320
+ successThreshold: 2,
321
+ failureThreshold: 4,
322
+ httpGet: { port: "http" },
323
+ },
324
+ livenessProbe: {
325
+ periodSeconds: 30,
326
+ timeoutSeconds: 2,
327
+ successThreshold: 1,
328
+ failureThreshold: 10,
329
+ httpGet: { port: "http" },
330
+ },
331
+ resources: {
332
+ requests: { memory: "192Mi" },
333
+ limits: { memory: "256Mi" },
334
+ },
335
+ volumeMounts: pulumi.all([config]).apply(([config]) => {
336
+ return config.volumeMounts.concat([
337
+ { name: "config", mountPath: "/config", subPath: "flood" },
338
+ ]);
339
+ }),
340
+ },
341
+ ],
342
+ volumes: pulumi.all([config]).apply(([config]) => {
343
+ return config.volumes.concat([
344
+ { name: "settings", secret: { secretName: this.settings.metadata.name } },
345
+ { name: "config", persistentVolumeClaim: { claimName: configVolumeName } },
346
+ ]);
347
+ }),
348
+ terminationGracePeriodSeconds: 120,
349
+ },
350
+ },
351
+ },
352
+ }, k8sOpts);
353
+ this.service = new kubernetes.v1.Service(name, {
354
+ metadata,
355
+ spec: {
356
+ selector: metadata.labels,
357
+ ipFamilyPolicy: "SingleStack",
358
+ ports: [
359
+ { name: "webui", port: QBittorrent.webUIPort, targetPort: "webui" },
360
+ { name: "http", port: 3001, targetPort: "http" },
361
+ ],
362
+ },
363
+ }, { ...k8sOpts, dependsOn: [this.deployment] });
364
+ this.middleware = new traefik.Middleware(name, {
365
+ metadata,
366
+ spec: {
367
+ headers: {
368
+ customRequestHeaders: {
369
+ Authorization: pulumi
370
+ .all([this.username, this.password])
371
+ .apply(([username, password]) => `Basic ${Buffer.from(username + ":" + password).toString("base64")}`),
372
+ },
373
+ },
374
+ },
375
+ }, k8sOpts);
376
+ this.ingress = new kubernetes.v1.SecureIngress(name, {
377
+ metadata: {
378
+ ...metadata,
379
+ annotations: {
380
+ "traefik.ingress.kubernetes.io/router.middlewares": this.middleware.metadata.apply((m) => `${m.namespace}-${m.name}@kubernetescrd`),
381
+ },
382
+ },
383
+ spec: {
384
+ ingressClassName: args.ingressClassName,
385
+ rules: [
386
+ {
387
+ host: args.hostname,
388
+ http: {
389
+ paths: [
390
+ {
391
+ path: "/",
392
+ pathType: "Prefix",
393
+ backend: {
394
+ service: {
395
+ name: this.service.metadata.name,
396
+ port: { name: this.service.spec.ports[1].name },
397
+ },
398
+ },
399
+ },
400
+ ],
401
+ },
402
+ },
403
+ ],
404
+ },
405
+ }, k8sOpts);
406
+ this.internalHostname = pulumi.interpolate `${this.service.metadata.name}.${this.service.metadata.namespace}.svc`;
407
+ this.registerOutputs();
408
+ }
409
+ }
410
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../lib/qbittorrent/deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PVCVolumeArgs, NFSVolumeArgs, QBittorrentArgs, QBittorrent } from "./deployment.js";
2
+ export { PVCVolumeArgs, NFSVolumeArgs, QBittorrentArgs, QBittorrent };
@@ -0,0 +1,3 @@
1
+ import { QBittorrent } from "./deployment.js";
2
+ export { QBittorrent };
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/qbittorrent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAiD,WAAW,EAAE,CAAC"}
@@ -9,11 +9,11 @@ interface VLANs {
9
9
  ipv4Address?: pulumi.Input<string>;
10
10
  ipv6Address?: pulumi.Input<string>;
11
11
  }
12
- interface Node extends node.Node, node.IgnitionArgs {
12
+ interface Node extends node.Node, node.ConfigArgs {
13
13
  ethernetInterfaceName?: pulumi.Input<string>;
14
14
  vlans?: pulumi.Input<pulumi.Input<VLANs>[]>;
15
15
  }
16
- export interface ClusterArgs extends node.IgnitionArgs {
16
+ export interface ClusterArgs extends node.ConfigArgs {
17
17
  name?: pulumi.Input<string>;
18
18
  nodes: pulumi.Input<{
19
19
  [key: string]: pulumi.Input<Node>;
@@ -22,6 +22,7 @@ export interface ClusterArgs extends node.IgnitionArgs {
22
22
  k0s?: pulumi.Input<pulumiK0s.types.input.ClusterK0sArgs>;
23
23
  hooks?: pulumi.Input<pulumiK0s.types.input.ClusterHooksArgs>;
24
24
  cloudProvider?: pulumi.Input<boolean>;
25
+ initConfigPath?: pulumi.Input<string>;
25
26
  protect?: boolean;
26
27
  }
27
28
  export declare class Cluster extends ComponentResource {
@@ -41,8 +42,10 @@ export declare class Cluster extends ComponentResource {
41
42
  */
42
43
  constructor(name: string, args: ClusterArgs, opts?: pulumi.ComponentResourceOptions);
43
44
  private createServers;
45
+ private mergeNodeArgs;
44
46
  private networkManagerConfigFiles;
45
47
  private networkdConfigFiles;
48
+ private interfacesConfigFiles;
46
49
  private static ethernetInterfaceName;
47
50
  }
48
51
  export {};