@ydkn/pulumi-components 0.4.2 → 0.4.4

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 (505) hide show
  1. package/.eslintrc.json +14 -0
  2. package/.gitlab-ci.yml +73 -0
  3. package/.prettierrc +3 -0
  4. package/{index.d.ts → index.ts} +46 -2
  5. package/lib/avahi/deployment.ts +171 -0
  6. package/lib/avahi/{index.d.ts → index.ts} +1 -1
  7. package/lib/avahi/service.ts +118 -0
  8. package/lib/aws/accessKey.ts +40 -0
  9. package/lib/aws/bucket.ts +71 -0
  10. package/lib/aws/{index.d.ts → index.ts} +1 -1
  11. package/lib/blocky/assets/dashboard.json +1777 -0
  12. package/lib/blocky/deployment.ts +134 -0
  13. package/lib/blocky/{index.d.ts → index.ts} +1 -1
  14. package/lib/certManager/assets/dashboard.json +1188 -0
  15. package/lib/certManager/certificate.ts +168 -0
  16. package/lib/certManager/index.ts +39 -0
  17. package/lib/certManager/issuer.ts +141 -0
  18. package/lib/certManager/operator.ts +244 -0
  19. package/lib/common/componentResource.ts +78 -0
  20. package/lib/common/{index.d.ts → index.ts} +2 -1
  21. package/lib/common/types.ts +3 -0
  22. package/lib/cups/avahiService.ts +66 -0
  23. package/lib/cups/deployment.ts +199 -0
  24. package/lib/cups/index.ts +4 -0
  25. package/lib/devcontainer/assets/init.sh +44 -0
  26. package/lib/devcontainer/deployment.ts +253 -0
  27. package/lib/devcontainer/index.ts +3 -0
  28. package/lib/dhcpd/deployment.ts +164 -0
  29. package/lib/dhcpd/index.ts +3 -0
  30. package/lib/externalDns/dnsEndpoint.ts +70 -0
  31. package/lib/externalDns/index.ts +18 -0
  32. package/lib/externalDns/operator.ts +165 -0
  33. package/lib/fcos/assets/rpm-opstree-install.sh +0 -0
  34. package/lib/fcos/config.ts +237 -0
  35. package/lib/fcos/host.ts +91 -0
  36. package/lib/fcos/index.ts +27 -0
  37. package/lib/freeradius/deployment.ts +244 -0
  38. package/lib/freeradius/{index.d.ts → index.ts} +1 -1
  39. package/lib/gitlab/{index.d.ts → index.ts} +13 -2
  40. package/lib/gitlab/project.ts +148 -0
  41. package/lib/gitlab/renovate.ts +98 -0
  42. package/lib/gitlab/runners/cleanup.ts +104 -0
  43. package/lib/gitlab/runners/{index.d.ts → index.ts} +1 -1
  44. package/lib/gitlab/runners/runner.ts +122 -0
  45. package/lib/gitlab/runners/runners.ts +49 -0
  46. package/lib/grafana/agent.ts +449 -0
  47. package/lib/grafana/dashboard.ts +38 -0
  48. package/lib/grafana/datasource.ts +59 -0
  49. package/lib/grafana/deployment.ts +78 -0
  50. package/lib/grafana/index.ts +17 -0
  51. package/lib/hcloud/assets/fcos-install.sh +0 -0
  52. package/lib/hcloud/cluster.ts +500 -0
  53. package/lib/hcloud/{index.d.ts → index.ts} +1 -1
  54. package/lib/hcloud/kubernetes.ts +237 -0
  55. package/lib/hcloud/wireguard.ts +155 -0
  56. package/lib/k0s/cluster.ts +264 -0
  57. package/lib/k0s/{index.d.ts → index.ts} +1 -1
  58. package/lib/kubeStateMetrics/deployment.ts +60 -0
  59. package/lib/kubeStateMetrics/{index.d.ts → index.ts} +1 -1
  60. package/lib/kubernetes/helm/{index.d.ts → index.ts} +1 -1
  61. package/lib/kubernetes/helm/v3/chart.ts +79 -0
  62. package/lib/kubernetes/helm/v3/helpers.ts +32 -0
  63. package/lib/kubernetes/helm/v3/{index.d.ts → index.ts} +1 -1
  64. package/lib/kubernetes/helm/v3/release.ts +17 -0
  65. package/lib/kubernetes/{index.d.ts → index.ts} +1 -1
  66. package/lib/kubernetes/transformations/filter.ts +43 -0
  67. package/lib/kubernetes/transformations/{index.d.ts → index.ts} +1 -1
  68. package/lib/kubernetes/transformations/metadataNamespace.ts +25 -0
  69. package/lib/kubernetes/transformations/removeCrdDescriptions.ts +78 -0
  70. package/lib/kubernetes/transformations/v1beta1Deprecations.ts +60 -0
  71. package/lib/kubernetes/v1/{index.d.ts → index.ts} +12 -2
  72. package/lib/kubernetes/v1/nfsVolume.ts +145 -0
  73. package/lib/kubernetes/v1/pullSecret.ts +37 -0
  74. package/lib/kubernetes/v1/service.ts +58 -0
  75. package/lib/localPathProvisioner/deployment.ts +88 -0
  76. package/lib/localPathProvisioner/index.ts +3 -0
  77. package/lib/loki/deployment.ts +122 -0
  78. package/lib/loki/index.ts +3 -0
  79. package/lib/metallb/controller.ts +96 -0
  80. package/lib/metallb/{index.d.ts → index.ts} +11 -2
  81. package/lib/metallb/ipAddressPool.ts +33 -0
  82. package/lib/metallb/l2Advertisement.ts +34 -0
  83. package/lib/node/{index.d.ts → index.ts} +1 -1
  84. package/lib/node/kubernetes.ts +129 -0
  85. package/lib/node/node.ts +17 -0
  86. package/lib/openldap/deployment.ts +226 -0
  87. package/lib/openldap/{index.d.ts → index.ts} +1 -1
  88. package/lib/plex/{index.d.ts → index.ts} +1 -1
  89. package/lib/plex/mediaServer.ts +265 -0
  90. package/lib/plex/playlists.ts +123 -0
  91. package/lib/postgresql/cluster.ts +61 -0
  92. package/lib/postgresql/index.ts +4 -0
  93. package/lib/postgresql/operator.ts +70 -0
  94. package/lib/prometheus/index.ts +23 -0
  95. package/lib/prometheus/monitor.ts +13 -0
  96. package/lib/prometheus/operator.ts +264 -0
  97. package/lib/prometheus/podMonitor.ts +32 -0
  98. package/lib/prometheus/serviceMonitor.ts +43 -0
  99. package/lib/raspberrypi/cluster.ts +279 -0
  100. package/lib/raspberrypi/{index.d.ts → index.ts} +1 -1
  101. package/lib/rethinkdb/deployment.ts +424 -0
  102. package/lib/rethinkdb/{index.d.ts → index.ts} +1 -1
  103. package/lib/rook/assets/dashboard.json +4871 -0
  104. package/lib/rook/blockPool.ts +80 -0
  105. package/lib/rook/cluster.ts +168 -0
  106. package/lib/rook/filesystem.ts +140 -0
  107. package/lib/rook/{index.d.ts → index.ts} +15 -2
  108. package/lib/rook/operator.ts +175 -0
  109. package/lib/samba/avahiService.ts +44 -0
  110. package/lib/samba/deployment.ts +305 -0
  111. package/lib/samba/index.ts +5 -0
  112. package/lib/samba/volumes.ts +70 -0
  113. package/lib/ssh/exec.ts +162 -0
  114. package/lib/ssh/file.ts +165 -0
  115. package/lib/ssh/{index.d.ts → index.ts} +1 -1
  116. package/lib/ssh/types.ts +20 -0
  117. package/lib/torproxy/deployment.ts +165 -0
  118. package/lib/torproxy/{index.d.ts → index.ts} +1 -1
  119. package/lib/traefik/assets/dashboard.json +759 -0
  120. package/lib/traefik/controller.ts +207 -0
  121. package/lib/traefik/{index.d.ts → index.ts} +1 -1
  122. package/lib/traefik/middleware.ts +37 -0
  123. package/lib/traefik/secureIngress.ts +81 -0
  124. package/lib/ubuntu/assets/init.sh +0 -0
  125. package/lib/ubuntu/deployment.ts +275 -0
  126. package/lib/ubuntu/{index.d.ts → index.ts} +1 -1
  127. package/lib/unifi/controller.ts +234 -0
  128. package/lib/unifi/{index.d.ts → index.ts} +1 -1
  129. package/lib/velero/{index.d.ts → index.ts} +1 -1
  130. package/lib/velero/operator.ts +182 -0
  131. package/lib/wireguard/deployment.ts +168 -0
  132. package/lib/wireguard/{index.d.ts → index.ts} +1 -1
  133. package/package.json +63 -62
  134. package/renovate.json +4 -0
  135. package/tsconfig.json +21 -0
  136. package/index.d.ts.map +0 -1
  137. package/index.js +0 -64
  138. package/index.js.map +0 -1
  139. package/lib/avahi/deployment.d.ts +0 -36
  140. package/lib/avahi/deployment.d.ts.map +0 -1
  141. package/lib/avahi/deployment.js +0 -164
  142. package/lib/avahi/deployment.js.map +0 -1
  143. package/lib/avahi/index.d.ts.map +0 -1
  144. package/lib/avahi/index.js +0 -8
  145. package/lib/avahi/index.js.map +0 -1
  146. package/lib/avahi/service.d.ts +0 -51
  147. package/lib/avahi/service.d.ts.map +0 -1
  148. package/lib/avahi/service.js +0 -57
  149. package/lib/avahi/service.js.map +0 -1
  150. package/lib/aws/accessKey.d.ts +0 -22
  151. package/lib/aws/accessKey.d.ts.map +0 -1
  152. package/lib/aws/accessKey.js +0 -27
  153. package/lib/aws/accessKey.js.map +0 -1
  154. package/lib/aws/bucket.d.ts +0 -28
  155. package/lib/aws/bucket.d.ts.map +0 -1
  156. package/lib/aws/bucket.js +0 -49
  157. package/lib/aws/bucket.js.map +0 -1
  158. package/lib/aws/index.d.ts.map +0 -1
  159. package/lib/aws/index.js +0 -8
  160. package/lib/aws/index.js.map +0 -1
  161. package/lib/blocky/deployment.d.ts +0 -39
  162. package/lib/blocky/deployment.d.ts.map +0 -1
  163. package/lib/blocky/deployment.js +0 -97
  164. package/lib/blocky/deployment.js.map +0 -1
  165. package/lib/blocky/index.d.ts.map +0 -1
  166. package/lib/blocky/index.js +0 -6
  167. package/lib/blocky/index.js.map +0 -1
  168. package/lib/certManager/certificate.d.ts +0 -126
  169. package/lib/certManager/certificate.d.ts.map +0 -1
  170. package/lib/certManager/certificate.js +0 -42
  171. package/lib/certManager/certificate.js.map +0 -1
  172. package/lib/certManager/index.d.ts +0 -5
  173. package/lib/certManager/index.d.ts.map +0 -1
  174. package/lib/certManager/index.js +0 -11
  175. package/lib/certManager/index.js.map +0 -1
  176. package/lib/certManager/issuer.d.ts +0 -109
  177. package/lib/certManager/issuer.d.ts.map +0 -1
  178. package/lib/certManager/issuer.js +0 -39
  179. package/lib/certManager/issuer.js.map +0 -1
  180. package/lib/certManager/operator.d.ts +0 -43
  181. package/lib/certManager/operator.d.ts.map +0 -1
  182. package/lib/certManager/operator.js +0 -177
  183. package/lib/certManager/operator.js.map +0 -1
  184. package/lib/common/componentResource.d.ts +0 -20
  185. package/lib/common/componentResource.d.ts.map +0 -1
  186. package/lib/common/componentResource.js +0 -62
  187. package/lib/common/componentResource.js.map +0 -1
  188. package/lib/common/index.d.ts.map +0 -1
  189. package/lib/common/index.js +0 -6
  190. package/lib/common/index.js.map +0 -1
  191. package/lib/common/types.d.ts +0 -3
  192. package/lib/common/types.d.ts.map +0 -1
  193. package/lib/common/types.js +0 -3
  194. package/lib/common/types.js.map +0 -1
  195. package/lib/externalDns/dnsEndpoint.d.ts +0 -66
  196. package/lib/externalDns/dnsEndpoint.d.ts.map +0 -1
  197. package/lib/externalDns/dnsEndpoint.js +0 -17
  198. package/lib/externalDns/dnsEndpoint.js.map +0 -1
  199. package/lib/externalDns/index.d.ts +0 -4
  200. package/lib/externalDns/index.d.ts.map +0 -1
  201. package/lib/externalDns/index.js +0 -8
  202. package/lib/externalDns/index.js.map +0 -1
  203. package/lib/externalDns/operator.d.ts +0 -45
  204. package/lib/externalDns/operator.d.ts.map +0 -1
  205. package/lib/externalDns/operator.js +0 -112
  206. package/lib/externalDns/operator.js.map +0 -1
  207. package/lib/fcos/config.d.ts +0 -156
  208. package/lib/fcos/config.d.ts.map +0 -1
  209. package/lib/fcos/config.js +0 -168
  210. package/lib/fcos/config.js.map +0 -1
  211. package/lib/fcos/host.d.ts +0 -34
  212. package/lib/fcos/host.d.ts.map +0 -1
  213. package/lib/fcos/host.js +0 -57
  214. package/lib/fcos/host.js.map +0 -1
  215. package/lib/fcos/index.d.ts +0 -4
  216. package/lib/fcos/index.d.ts.map +0 -1
  217. package/lib/fcos/index.js +0 -8
  218. package/lib/fcos/index.js.map +0 -1
  219. package/lib/freeradius/deployment.d.ts +0 -74
  220. package/lib/freeradius/deployment.d.ts.map +0 -1
  221. package/lib/freeradius/deployment.js +0 -216
  222. package/lib/freeradius/deployment.js.map +0 -1
  223. package/lib/freeradius/index.d.ts.map +0 -1
  224. package/lib/freeradius/index.js +0 -6
  225. package/lib/freeradius/index.js.map +0 -1
  226. package/lib/gitlab/index.d.ts.map +0 -1
  227. package/lib/gitlab/index.js +0 -12
  228. package/lib/gitlab/index.js.map +0 -1
  229. package/lib/gitlab/project.d.ts +0 -18
  230. package/lib/gitlab/project.d.ts.map +0 -1
  231. package/lib/gitlab/project.js +0 -116
  232. package/lib/gitlab/project.js.map +0 -1
  233. package/lib/gitlab/renovate.d.ts +0 -23
  234. package/lib/gitlab/renovate.d.ts.map +0 -1
  235. package/lib/gitlab/renovate.js +0 -77
  236. package/lib/gitlab/renovate.js.map +0 -1
  237. package/lib/gitlab/runners/cleanup.d.ts +0 -20
  238. package/lib/gitlab/runners/cleanup.d.ts.map +0 -1
  239. package/lib/gitlab/runners/cleanup.js +0 -86
  240. package/lib/gitlab/runners/cleanup.js.map +0 -1
  241. package/lib/gitlab/runners/index.d.ts.map +0 -1
  242. package/lib/gitlab/runners/index.js +0 -10
  243. package/lib/gitlab/runners/index.js.map +0 -1
  244. package/lib/gitlab/runners/runner.d.ts +0 -30
  245. package/lib/gitlab/runners/runner.d.ts.map +0 -1
  246. package/lib/gitlab/runners/runner.js +0 -89
  247. package/lib/gitlab/runners/runner.js.map +0 -1
  248. package/lib/gitlab/runners/runners.d.ts +0 -21
  249. package/lib/gitlab/runners/runners.d.ts.map +0 -1
  250. package/lib/gitlab/runners/runners.js +0 -36
  251. package/lib/gitlab/runners/runners.js.map +0 -1
  252. package/lib/grafana/agent.d.ts +0 -43
  253. package/lib/grafana/agent.d.ts.map +0 -1
  254. package/lib/grafana/agent.js +0 -417
  255. package/lib/grafana/agent.js.map +0 -1
  256. package/lib/grafana/index.d.ts +0 -3
  257. package/lib/grafana/index.d.ts.map +0 -1
  258. package/lib/grafana/index.js +0 -6
  259. package/lib/grafana/index.js.map +0 -1
  260. package/lib/hcloud/cluster.d.ts +0 -96
  261. package/lib/hcloud/cluster.d.ts.map +0 -1
  262. package/lib/hcloud/cluster.js +0 -323
  263. package/lib/hcloud/cluster.js.map +0 -1
  264. package/lib/hcloud/index.d.ts.map +0 -1
  265. package/lib/hcloud/index.js +0 -10
  266. package/lib/hcloud/index.js.map +0 -1
  267. package/lib/hcloud/kubernetes.d.ts +0 -39
  268. package/lib/hcloud/kubernetes.d.ts.map +0 -1
  269. package/lib/hcloud/kubernetes.js +0 -188
  270. package/lib/hcloud/kubernetes.js.map +0 -1
  271. package/lib/hcloud/wireguard.d.ts +0 -33
  272. package/lib/hcloud/wireguard.d.ts.map +0 -1
  273. package/lib/hcloud/wireguard.js +0 -103
  274. package/lib/hcloud/wireguard.js.map +0 -1
  275. package/lib/k0s/cluster.d.ts +0 -51
  276. package/lib/k0s/cluster.d.ts.map +0 -1
  277. package/lib/k0s/cluster.js +0 -183
  278. package/lib/k0s/cluster.js.map +0 -1
  279. package/lib/k0s/index.d.ts.map +0 -1
  280. package/lib/k0s/index.js +0 -6
  281. package/lib/k0s/index.js.map +0 -1
  282. package/lib/kubeStateMetrics/deployment.d.ts +0 -20
  283. package/lib/kubeStateMetrics/deployment.d.ts.map +0 -1
  284. package/lib/kubeStateMetrics/deployment.js +0 -47
  285. package/lib/kubeStateMetrics/deployment.js.map +0 -1
  286. package/lib/kubeStateMetrics/index.d.ts.map +0 -1
  287. package/lib/kubeStateMetrics/index.js +0 -6
  288. package/lib/kubeStateMetrics/index.js.map +0 -1
  289. package/lib/kubernetes/helm/index.d.ts.map +0 -1
  290. package/lib/kubernetes/helm/index.js +0 -6
  291. package/lib/kubernetes/helm/index.js.map +0 -1
  292. package/lib/kubernetes/helm/v3/chart.d.ts +0 -37
  293. package/lib/kubernetes/helm/v3/chart.d.ts.map +0 -1
  294. package/lib/kubernetes/helm/v3/chart.js +0 -46
  295. package/lib/kubernetes/helm/v3/chart.js.map +0 -1
  296. package/lib/kubernetes/helm/v3/helpers.d.ts +0 -3
  297. package/lib/kubernetes/helm/v3/helpers.d.ts.map +0 -1
  298. package/lib/kubernetes/helm/v3/helpers.js +0 -29
  299. package/lib/kubernetes/helm/v3/helpers.js.map +0 -1
  300. package/lib/kubernetes/helm/v3/index.d.ts.map +0 -1
  301. package/lib/kubernetes/helm/v3/index.js +0 -10
  302. package/lib/kubernetes/helm/v3/index.js.map +0 -1
  303. package/lib/kubernetes/helm/v3/release.d.ts +0 -15
  304. package/lib/kubernetes/helm/v3/release.d.ts.map +0 -1
  305. package/lib/kubernetes/helm/v3/release.js +0 -18
  306. package/lib/kubernetes/helm/v3/release.js.map +0 -1
  307. package/lib/kubernetes/index.d.ts.map +0 -1
  308. package/lib/kubernetes/index.js +0 -10
  309. package/lib/kubernetes/index.js.map +0 -1
  310. package/lib/kubernetes/transformations/filter.d.ts +0 -13
  311. package/lib/kubernetes/transformations/filter.d.ts.map +0 -1
  312. package/lib/kubernetes/transformations/filter.js +0 -32
  313. package/lib/kubernetes/transformations/filter.js.map +0 -1
  314. package/lib/kubernetes/transformations/index.d.ts.map +0 -1
  315. package/lib/kubernetes/transformations/index.js +0 -12
  316. package/lib/kubernetes/transformations/index.js.map +0 -1
  317. package/lib/kubernetes/transformations/metadataNamespace.d.ts +0 -3
  318. package/lib/kubernetes/transformations/metadataNamespace.d.ts.map +0 -1
  319. package/lib/kubernetes/transformations/metadataNamespace.js +0 -27
  320. package/lib/kubernetes/transformations/metadataNamespace.js.map +0 -1
  321. package/lib/kubernetes/transformations/removeCrdDescriptions.d.ts +0 -3
  322. package/lib/kubernetes/transformations/removeCrdDescriptions.d.ts.map +0 -1
  323. package/lib/kubernetes/transformations/removeCrdDescriptions.js +0 -61
  324. package/lib/kubernetes/transformations/removeCrdDescriptions.js.map +0 -1
  325. package/lib/kubernetes/transformations/v1beta1Deprecations.d.ts +0 -3
  326. package/lib/kubernetes/transformations/v1beta1Deprecations.d.ts.map +0 -1
  327. package/lib/kubernetes/transformations/v1beta1Deprecations.js +0 -55
  328. package/lib/kubernetes/transformations/v1beta1Deprecations.js.map +0 -1
  329. package/lib/kubernetes/v1/index.d.ts.map +0 -1
  330. package/lib/kubernetes/v1/index.js +0 -10
  331. package/lib/kubernetes/v1/index.js.map +0 -1
  332. package/lib/kubernetes/v1/nfsVolume.d.ts +0 -92
  333. package/lib/kubernetes/v1/nfsVolume.d.ts.map +0 -1
  334. package/lib/kubernetes/v1/nfsVolume.js +0 -97
  335. package/lib/kubernetes/v1/nfsVolume.js.map +0 -1
  336. package/lib/kubernetes/v1/pullSecret.d.ts +0 -31
  337. package/lib/kubernetes/v1/pullSecret.d.ts.map +0 -1
  338. package/lib/kubernetes/v1/pullSecret.js +0 -27
  339. package/lib/kubernetes/v1/pullSecret.js.map +0 -1
  340. package/lib/kubernetes/v1/service.d.ts +0 -31
  341. package/lib/kubernetes/v1/service.d.ts.map +0 -1
  342. package/lib/kubernetes/v1/service.js +0 -43
  343. package/lib/kubernetes/v1/service.js.map +0 -1
  344. package/lib/metallb/controller.d.ts +0 -17
  345. package/lib/metallb/controller.d.ts.map +0 -1
  346. package/lib/metallb/controller.js +0 -87
  347. package/lib/metallb/controller.js.map +0 -1
  348. package/lib/metallb/index.d.ts.map +0 -1
  349. package/lib/metallb/index.js +0 -10
  350. package/lib/metallb/index.js.map +0 -1
  351. package/lib/metallb/ipAddressPool.d.ts +0 -20
  352. package/lib/metallb/ipAddressPool.d.ts.map +0 -1
  353. package/lib/metallb/ipAddressPool.js +0 -22
  354. package/lib/metallb/ipAddressPool.js.map +0 -1
  355. package/lib/metallb/l2Advertisement.d.ts +0 -21
  356. package/lib/metallb/l2Advertisement.d.ts.map +0 -1
  357. package/lib/metallb/l2Advertisement.js +0 -22
  358. package/lib/metallb/l2Advertisement.js.map +0 -1
  359. package/lib/node/index.d.ts.map +0 -1
  360. package/lib/node/index.js +0 -6
  361. package/lib/node/index.js.map +0 -1
  362. package/lib/node/kubernetes.d.ts +0 -38
  363. package/lib/node/kubernetes.d.ts.map +0 -1
  364. package/lib/node/kubernetes.js +0 -89
  365. package/lib/node/kubernetes.js.map +0 -1
  366. package/lib/node/node.d.ts +0 -21
  367. package/lib/node/node.d.ts.map +0 -1
  368. package/lib/node/node.js +0 -3
  369. package/lib/node/node.js.map +0 -1
  370. package/lib/openldap/deployment.d.ts +0 -58
  371. package/lib/openldap/deployment.d.ts.map +0 -1
  372. package/lib/openldap/deployment.js +0 -217
  373. package/lib/openldap/deployment.js.map +0 -1
  374. package/lib/openldap/index.d.ts.map +0 -1
  375. package/lib/openldap/index.js +0 -6
  376. package/lib/openldap/index.js.map +0 -1
  377. package/lib/plex/index.d.ts.map +0 -1
  378. package/lib/plex/index.js +0 -8
  379. package/lib/plex/index.js.map +0 -1
  380. package/lib/plex/mediaServer.d.ts +0 -46
  381. package/lib/plex/mediaServer.d.ts.map +0 -1
  382. package/lib/plex/mediaServer.js +0 -234
  383. package/lib/plex/mediaServer.js.map +0 -1
  384. package/lib/plex/playlists.d.ts +0 -62
  385. package/lib/plex/playlists.d.ts.map +0 -1
  386. package/lib/plex/playlists.js +0 -129
  387. package/lib/plex/playlists.js.map +0 -1
  388. package/lib/prometheus/index.d.ts +0 -4
  389. package/lib/prometheus/index.d.ts.map +0 -1
  390. package/lib/prometheus/index.js +0 -8
  391. package/lib/prometheus/index.js.map +0 -1
  392. package/lib/prometheus/podMonitor.d.ts +0 -42
  393. package/lib/prometheus/podMonitor.d.ts.map +0 -1
  394. package/lib/prometheus/podMonitor.js +0 -17
  395. package/lib/prometheus/podMonitor.js.map +0 -1
  396. package/lib/prometheus/serviceMonitor.d.ts +0 -46
  397. package/lib/prometheus/serviceMonitor.d.ts.map +0 -1
  398. package/lib/prometheus/serviceMonitor.js +0 -17
  399. package/lib/prometheus/serviceMonitor.js.map +0 -1
  400. package/lib/raspberrypi/cluster.d.ts +0 -41
  401. package/lib/raspberrypi/cluster.d.ts.map +0 -1
  402. package/lib/raspberrypi/cluster.js +0 -194
  403. package/lib/raspberrypi/cluster.js.map +0 -1
  404. package/lib/raspberrypi/index.d.ts.map +0 -1
  405. package/lib/raspberrypi/index.js +0 -6
  406. package/lib/raspberrypi/index.js.map +0 -1
  407. package/lib/rethinkdb/deployment.d.ts +0 -61
  408. package/lib/rethinkdb/deployment.d.ts.map +0 -1
  409. package/lib/rethinkdb/deployment.js +0 -350
  410. package/lib/rethinkdb/deployment.js.map +0 -1
  411. package/lib/rethinkdb/index.d.ts.map +0 -1
  412. package/lib/rethinkdb/index.js +0 -6
  413. package/lib/rethinkdb/index.js.map +0 -1
  414. package/lib/rook/blockPool.d.ts +0 -28
  415. package/lib/rook/blockPool.d.ts.map +0 -1
  416. package/lib/rook/blockPool.js +0 -56
  417. package/lib/rook/blockPool.js.map +0 -1
  418. package/lib/rook/cluster.d.ts +0 -54
  419. package/lib/rook/cluster.d.ts.map +0 -1
  420. package/lib/rook/cluster.js +0 -100
  421. package/lib/rook/cluster.js.map +0 -1
  422. package/lib/rook/filesystem.d.ts +0 -29
  423. package/lib/rook/filesystem.d.ts.map +0 -1
  424. package/lib/rook/filesystem.js +0 -110
  425. package/lib/rook/filesystem.js.map +0 -1
  426. package/lib/rook/index.d.ts.map +0 -1
  427. package/lib/rook/index.js +0 -12
  428. package/lib/rook/index.js.map +0 -1
  429. package/lib/rook/operator.d.ts +0 -19
  430. package/lib/rook/operator.d.ts.map +0 -1
  431. package/lib/rook/operator.js +0 -162
  432. package/lib/rook/operator.js.map +0 -1
  433. package/lib/samba/deployment.d.ts +0 -79
  434. package/lib/samba/deployment.d.ts.map +0 -1
  435. package/lib/samba/deployment.js +0 -238
  436. package/lib/samba/deployment.js.map +0 -1
  437. package/lib/samba/index.d.ts +0 -3
  438. package/lib/samba/index.d.ts.map +0 -1
  439. package/lib/samba/index.js +0 -6
  440. package/lib/samba/index.js.map +0 -1
  441. package/lib/ssh/exec.d.ts +0 -33
  442. package/lib/ssh/exec.d.ts.map +0 -1
  443. package/lib/ssh/exec.js +0 -116
  444. package/lib/ssh/exec.js.map +0 -1
  445. package/lib/ssh/file.d.ts +0 -43
  446. package/lib/ssh/file.d.ts.map +0 -1
  447. package/lib/ssh/file.js +0 -110
  448. package/lib/ssh/file.js.map +0 -1
  449. package/lib/ssh/index.d.ts.map +0 -1
  450. package/lib/ssh/index.js +0 -8
  451. package/lib/ssh/index.js.map +0 -1
  452. package/lib/ssh/types.d.ts +0 -19
  453. package/lib/ssh/types.d.ts.map +0 -1
  454. package/lib/ssh/types.js +0 -3
  455. package/lib/ssh/types.js.map +0 -1
  456. package/lib/torproxy/deployment.d.ts +0 -31
  457. package/lib/torproxy/deployment.d.ts.map +0 -1
  458. package/lib/torproxy/deployment.js +0 -131
  459. package/lib/torproxy/deployment.js.map +0 -1
  460. package/lib/torproxy/index.d.ts.map +0 -1
  461. package/lib/torproxy/index.js +0 -6
  462. package/lib/torproxy/index.js.map +0 -1
  463. package/lib/traefik/controller.d.ts +0 -50
  464. package/lib/traefik/controller.d.ts.map +0 -1
  465. package/lib/traefik/controller.js +0 -166
  466. package/lib/traefik/controller.js.map +0 -1
  467. package/lib/traefik/index.d.ts.map +0 -1
  468. package/lib/traefik/index.js +0 -10
  469. package/lib/traefik/index.js.map +0 -1
  470. package/lib/traefik/middleware.d.ts +0 -27
  471. package/lib/traefik/middleware.d.ts.map +0 -1
  472. package/lib/traefik/middleware.js +0 -22
  473. package/lib/traefik/middleware.js.map +0 -1
  474. package/lib/traefik/secureIngress.d.ts +0 -32
  475. package/lib/traefik/secureIngress.d.ts.map +0 -1
  476. package/lib/traefik/secureIngress.js +0 -58
  477. package/lib/traefik/secureIngress.js.map +0 -1
  478. package/lib/ubuntu/deployment.d.ts +0 -67
  479. package/lib/ubuntu/deployment.d.ts.map +0 -1
  480. package/lib/ubuntu/deployment.js +0 -230
  481. package/lib/ubuntu/deployment.js.map +0 -1
  482. package/lib/ubuntu/index.d.ts.map +0 -1
  483. package/lib/ubuntu/index.js +0 -6
  484. package/lib/ubuntu/index.js.map +0 -1
  485. package/lib/unifi/controller.d.ts +0 -52
  486. package/lib/unifi/controller.d.ts.map +0 -1
  487. package/lib/unifi/controller.js +0 -232
  488. package/lib/unifi/controller.js.map +0 -1
  489. package/lib/unifi/index.d.ts.map +0 -1
  490. package/lib/unifi/index.js +0 -6
  491. package/lib/unifi/index.js.map +0 -1
  492. package/lib/velero/index.d.ts.map +0 -1
  493. package/lib/velero/index.js +0 -6
  494. package/lib/velero/index.js.map +0 -1
  495. package/lib/velero/operator.d.ts +0 -31
  496. package/lib/velero/operator.d.ts.map +0 -1
  497. package/lib/velero/operator.js +0 -148
  498. package/lib/velero/operator.js.map +0 -1
  499. package/lib/wireguard/deployment.d.ts +0 -82
  500. package/lib/wireguard/deployment.d.ts.map +0 -1
  501. package/lib/wireguard/deployment.js +0 -161
  502. package/lib/wireguard/deployment.js.map +0 -1
  503. package/lib/wireguard/index.d.ts.map +0 -1
  504. package/lib/wireguard/index.js +0 -6
  505. package/lib/wireguard/index.js.map +0 -1
@@ -0,0 +1,500 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as random from "@pulumi/random";
3
+ import * as tls from "@pulumi/tls";
4
+ import * as hcloud from "@pulumi/hcloud";
5
+ import * as k8s from "@pulumi/kubernetes";
6
+ import * as path from "path";
7
+ import { ComponentResource } from "../common";
8
+ import * as node from "../node";
9
+ import * as fcos from "../fcos";
10
+ import * as k0s from "../k0s";
11
+ import * as ssh from "../ssh";
12
+ import { Kubernetes } from "./kubernetes";
13
+
14
+ interface Nodes extends node.Node, fcos.HostArgs {
15
+ serverType: pulumi.Input<string>;
16
+ count?: pulumi.Input<number>;
17
+ }
18
+
19
+ interface Node extends node.Node {
20
+ fcosHost: fcos.Host;
21
+ }
22
+
23
+ /**
24
+ * Arguments for hcloud cluster resource
25
+ */
26
+ export interface ClusterArgs extends k0s.ClusterArgs, fcos.IgnitionArgs {
27
+ name?: pulumi.Input<string>;
28
+ token: pulumi.Input<string>;
29
+ location: pulumi.Input<string>;
30
+ zone: pulumi.Input<string>;
31
+ networkRange: pulumi.Input<string>;
32
+ nodeRange: pulumi.Input<string>;
33
+ nodes: pulumi.Input<pulumi.Input<Nodes>[]>;
34
+ externalSshAccess?: pulumi.Input<boolean>;
35
+ trustedNetworkRanges?: pulumi.Input<pulumi.Input<string>[]>;
36
+ externalAccess?: pulumi.Input<boolean>;
37
+ sshAuthorizedKeys?: pulumi.Input<pulumi.Input<string>[]>;
38
+ }
39
+
40
+ export class Cluster extends ComponentResource {
41
+ private static readonly rescueSshUsername = "root";
42
+ private static readonly sshUsername = "pulumi";
43
+ private static readonly primaryInterface = "ens3";
44
+ private static readonly privateInterfaces = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19].map((i) => `ens${i}`);
45
+
46
+ private readonly sshKey: hcloud.SshKey;
47
+ private readonly network: hcloud.Network;
48
+ private readonly nodeSubnet: hcloud.NetworkSubnet;
49
+ private readonly placementGroup: hcloud.PlacementGroup;
50
+ private readonly sshFirewall: hcloud.Firewall;
51
+ private readonly nodesFirewall: hcloud.Firewall;
52
+ private readonly kubernetes: Kubernetes;
53
+ public readonly name: pulumi.Output<string>;
54
+ public readonly location: pulumi.Output<string>;
55
+ public readonly zone: pulumi.Output<string>;
56
+ public readonly sshPrivateKey: tls.PrivateKey;
57
+ public readonly sshPublicKey: pulumi.Output<string>;
58
+ public readonly networkId: pulumi.Output<number>;
59
+ public readonly networkRange: pulumi.Output<string>;
60
+ public readonly nodeRange: pulumi.Output<string>;
61
+ public readonly nodes: pulumi.Output<pulumi.Output<node.Node>[]>;
62
+ public readonly kubeconfig: pulumi.Output<string>;
63
+ public readonly provider: k8s.Provider;
64
+ public readonly kubeletDirPath: pulumi.Output<string>;
65
+
66
+ /**
67
+ * Create a new hcloud cluster resource.
68
+ * @param name The name of hcloud cluster resource.
69
+ * @param args A bag of arguments to control the hcloud cluster creation.
70
+ * @param opts A bag of options that control this resource's behavior.
71
+ */
72
+ constructor(name: string, args: ClusterArgs, opts?: pulumi.ComponentResourceOptions) {
73
+ super("hcloud:cluster", name, args, opts);
74
+
75
+ const emptyOpts = this.opts();
76
+ const hcloudOpts = this.opts(hcloud.Provider);
77
+
78
+ if (args.name === undefined) {
79
+ this.name = new random.RandomId(name, { byteLength: 3 }, { ...emptyOpts, protect: args.protect }).hex;
80
+ } else {
81
+ this.name = pulumi.output(args.name);
82
+ }
83
+
84
+ this.location = pulumi.output(args.location);
85
+ this.zone = pulumi.output(args.zone);
86
+
87
+ this.sshPrivateKey = new tls.PrivateKey(name, { algorithm: "ED25519" }, { ...emptyOpts, protect: args.protect });
88
+ this.sshPublicKey = this.sshPrivateKey.publicKeyOpenssh;
89
+ this.sshKey = new hcloud.SshKey(name, { name: "pulumi", publicKey: this.sshPublicKey }, hcloudOpts);
90
+
91
+ this.network = new hcloud.Network(
92
+ name,
93
+ { name: "private", ipRange: args.networkRange, labels: { cluster: this.name } },
94
+ { ...hcloudOpts, protect: args.protect }
95
+ );
96
+ this.networkId = this.network.id.apply((o) => parseInt(o));
97
+ this.networkRange = this.network.ipRange;
98
+
99
+ this.nodeSubnet = new hcloud.NetworkSubnet(
100
+ `${name}-nodes`,
101
+ { type: "cloud", networkId: this.networkId, networkZone: this.zone, ipRange: args.nodeRange },
102
+ { ...hcloudOpts, protect: args.protect }
103
+ );
104
+ this.nodeRange = this.nodeSubnet.ipRange;
105
+
106
+ this.placementGroup = new hcloud.PlacementGroup(
107
+ name,
108
+ { name: "nodes", type: "spread", labels: { cluster: this.name } },
109
+ hcloudOpts
110
+ );
111
+
112
+ const serverImage = pulumi
113
+ .all([hcloud.getImages({ withStatuses: ["available"] }, hcloudOpts)])
114
+ .apply(([result]) => {
115
+ return result.images.filter((image) => image.osFlavor === "ubuntu").sort((a, b) => (a > b ? -1 : 1))[0].name;
116
+ });
117
+
118
+ const servers = this.createServers(
119
+ args.nodes,
120
+ serverImage,
121
+ this.sshKey,
122
+ this.sshPrivateKey.privateKeyOpenssh,
123
+ this.nodeSubnet,
124
+ this.placementGroup,
125
+ args.modules,
126
+ args.packages,
127
+ args.files,
128
+ args.systemdUnits,
129
+ args.sshAuthorizedKeys,
130
+ args.protect
131
+ );
132
+
133
+ this.nodes = servers.apply((servers) => servers.map((s) => s.node));
134
+
135
+ const nodeIPs = pulumi.all([this.nodes]).apply(([nodes]) =>
136
+ pulumi.all(nodes).apply((nodes) => {
137
+ const nodeIPs: pulumi.Output<string>[] = [];
138
+
139
+ for (const node of nodes) {
140
+ nodeIPs.push(pulumi.interpolate`${node.ipv4Address}/32`, pulumi.interpolate`${node.ipv6Address}/128`);
141
+
142
+ if (node.privateIpv4Address !== undefined) {
143
+ nodeIPs.push(pulumi.interpolate`${node.privateIpv4Address}/32`);
144
+ }
145
+ }
146
+
147
+ if (nodeIPs.length <= 0) {
148
+ nodeIPs.push(pulumi.output("127.0.0.1/32"));
149
+ }
150
+
151
+ return nodeIPs;
152
+ })
153
+ );
154
+
155
+ this.sshFirewall = new hcloud.Firewall(
156
+ `${name}-ssh`,
157
+ {
158
+ name: "ssh",
159
+ labels: { cluster: this.name },
160
+ applyTos: [{ labelSelector: pulumi.interpolate`cluster=${this.name}` }],
161
+ rules: [
162
+ {
163
+ description: "SSH",
164
+ direction: "in",
165
+ protocol: "tcp",
166
+ port: "22",
167
+ sourceIps: pulumi
168
+ .all([args.externalSshAccess])
169
+ .apply(([externalSshAccess]) =>
170
+ externalSshAccess ? ["0.0.0.0/0", "::/0"] : ["127.0.0.1/32", "::1/128"]
171
+ ),
172
+ },
173
+ ],
174
+ },
175
+ hcloudOpts
176
+ );
177
+
178
+ const nodeFirewallSourceIps = nodeIPs.apply((nodeIPs) => nodeIPs.concat(this.networkRange));
179
+
180
+ this.nodesFirewall = new hcloud.Firewall(
181
+ `${name}-nodes`,
182
+ {
183
+ name: "nodes",
184
+ labels: { cluster: this.name },
185
+ applyTos: [{ labelSelector: pulumi.interpolate`cluster=${this.name}` }],
186
+ rules: pulumi
187
+ .all([args.trustedNetworkRanges ?? [], nodeFirewallSourceIps])
188
+ .apply(([trustedNetworkRanges, nodeFirewallSourceIps]) =>
189
+ pulumi.all(trustedNetworkRanges.concat(nodeFirewallSourceIps)).apply((sourceIps) => [
190
+ { description: "ICMP", direction: "in", protocol: "icmp", sourceIps },
191
+ { description: "TCP", direction: "in", protocol: "tcp", port: "any", sourceIps },
192
+ { description: "UDP", direction: "in", protocol: "udp", port: "any", sourceIps },
193
+ ])
194
+ ),
195
+ },
196
+ hcloudOpts
197
+ );
198
+
199
+ pulumi.all([args.externalAccess]).apply(([externalAccess]) => {
200
+ if (externalAccess) {
201
+ // eslint-disable-next-line no-unused-vars
202
+ const controllersFirewall = new hcloud.Firewall(
203
+ `${name}-controllers`,
204
+ {
205
+ name: "controllers",
206
+ labels: { cluster: this.name, controller: "true" },
207
+ applyTos: [{ labelSelector: pulumi.interpolate`cluster=${this.name},role=controller` }],
208
+ rules: [
209
+ { description: "TCP", direction: "in", protocol: "tcp", port: "6443", sourceIps: ["0.0.0.0/0", "::/0"] },
210
+ ],
211
+ },
212
+ hcloudOpts
213
+ );
214
+ }
215
+ });
216
+
217
+ const k0sCluster = servers.apply((servers) =>
218
+ pulumi.all(servers.map((s) => s.depends)).apply((dependsOn) => {
219
+ return new k0s.Cluster(
220
+ name,
221
+ {
222
+ name: this.name,
223
+ nodes: this.nodes,
224
+ k0s: args.k0s,
225
+ cloudProvider: true,
226
+ protect: args.protect,
227
+ },
228
+ { ...emptyOpts, dependsOn }
229
+ );
230
+ })
231
+ );
232
+
233
+ this.kubeletDirPath = k0sCluster.kubeletDirPath;
234
+ this.kubeconfig = k0sCluster.kubeconfig;
235
+ this.provider = new k8s.Provider(
236
+ `${name}-k8s`,
237
+ { kubeconfig: this.kubeconfig, suppressHelmHookWarnings: true },
238
+ emptyOpts
239
+ );
240
+
241
+ this.kubernetes = new Kubernetes(
242
+ name,
243
+ {
244
+ token: args.token,
245
+ network: this.network.id,
246
+ podCIDR: k0sCluster.apply((cluster) =>
247
+ cluster.spec.apply((spec) =>
248
+ spec.k0s
249
+ ? [spec.k0s.config?.spec?.network?.podCIDR, spec.k0s.config?.spec?.network?.dualStack?.IPv6podCIDR]
250
+ .filter((cidr) => cidr !== undefined)
251
+ .join(",")
252
+ : ""
253
+ )
254
+ ),
255
+ kubeletDirPath: this.kubeletDirPath,
256
+ },
257
+ { ...emptyOpts, providers: [this.provider] }
258
+ );
259
+
260
+ this.registerOutputs();
261
+ }
262
+
263
+ private createServers(
264
+ nodes: pulumi.Input<pulumi.Input<Nodes>[]>,
265
+ image: pulumi.Input<string>,
266
+ sshKey: pulumi.Input<hcloud.SshKey>,
267
+ sshPrivateKey: pulumi.Input<string>,
268
+ subnet: hcloud.NetworkSubnet,
269
+ placementGroup: hcloud.PlacementGroup,
270
+ modules?: pulumi.Input<pulumi.Input<string>[]>,
271
+ packages?: pulumi.Input<pulumi.Input<string>[]>,
272
+ files?: pulumi.Input<pulumi.Input<fcos.FilesArgs>[]>,
273
+ systemdUnits?: pulumi.Input<pulumi.Input<fcos.SystemdUnitArgs>[]>,
274
+ sshAuthorizedKeys?: pulumi.Input<pulumi.Input<string>[]>,
275
+ protect?: boolean
276
+ ): pulumi.Output<{ node: pulumi.Output<Node>; depends?: pulumi.Output<pulumi.Resource> }[]> {
277
+ const emptyOpts = this.opts();
278
+ const hcloudOpts = this.opts(hcloud.Provider);
279
+
280
+ return pulumi.all([nodes]).apply(([nodes]) => {
281
+ const results: { node: pulumi.Output<Node>; depends?: pulumi.Output<pulumi.Resource> }[] = [];
282
+
283
+ for (const nodeGroup of nodes) {
284
+ let nodesCount = nodeGroup.count;
285
+ if (nodesCount === undefined) {
286
+ nodesCount = 1;
287
+ }
288
+
289
+ for (let i = 0; i < nodesCount; i++) {
290
+ const nodeId = new random.RandomId(`${nodeGroup.id}-${i}`, { byteLength: 3 }, emptyOpts).hex;
291
+ const hostname = pulumi.interpolate`${this.name}-${k0s.Cluster.rolesHostname(nodeGroup.roles)}-${nodeId}`;
292
+
293
+ const server = pulumi
294
+ .all([this.name, hostname, nodeGroup.roles, sshKey, nodeId, placementGroup.id])
295
+ .apply(([name, hostname, roles, sshKey, nodeId, placementGroupId]) => {
296
+ const role = k0s.Cluster.rolesHostname(roles);
297
+
298
+ return new hcloud.Server(
299
+ hostname,
300
+ {
301
+ name: hostname,
302
+ location: this.location,
303
+ serverType: nodeGroup.serverType,
304
+ image,
305
+ rescue: "linux64",
306
+ sshKeys: [sshKey.id],
307
+ keepDisk: true,
308
+ labels: { cluster: name, role, nodeId },
309
+ placementGroupId: parseInt(placementGroupId),
310
+ },
311
+ { ...hcloudOpts, ignoreChanges: ["sshKeys"], protect }
312
+ );
313
+ });
314
+
315
+ const serverNetwork = pulumi.all([server.id, server.name]).apply(([serverId, serverName]) => {
316
+ return new hcloud.ServerNetwork(
317
+ serverName,
318
+ { serverId: parseInt(serverId), subnetId: subnet.id },
319
+ hcloudOpts
320
+ );
321
+ });
322
+
323
+ const node = pulumi
324
+ .all([hostname, modules, packages, files, systemdUnits, sshAuthorizedKeys, server.ipv6Address])
325
+ .apply(([hostname, modules, packages, files, systemdUnits, sshAuthorizedKeys, ipv6Address]) => {
326
+ const fcosHost = new fcos.Host(
327
+ hostname,
328
+ {
329
+ hostname,
330
+ files: pulumi.all(files || []).apply((files) => {
331
+ files.push({
332
+ path: `/etc/NetworkManager/system-connections/${Cluster.primaryInterface}.nmconnection`,
333
+ contents: [
334
+ "[connection]",
335
+ "type=ethernet",
336
+ `id=${Cluster.primaryInterface}`,
337
+ `interface-name=${Cluster.primaryInterface}`,
338
+ "[ipv4]",
339
+ "method=auto",
340
+ "ignore-auto-dns=true",
341
+ "[ipv6]",
342
+ "method=manual",
343
+ `address1=${ipv6Address}`,
344
+ "gateway=fe80::1",
345
+ "dns=2a01:4ff:ff00::add:1;2a01:4ff:ff00::add:2",
346
+ ].join("\n"),
347
+ mode: 0o600,
348
+ });
349
+
350
+ for (const iface of Cluster.privateInterfaces) {
351
+ files.push({
352
+ path: `/etc/NetworkManager/system-connections/${iface}.nmconnection`,
353
+ contents: [
354
+ "[connection]",
355
+ "type=ethernet",
356
+ `id=${iface}`,
357
+ `interface-name=${iface}`,
358
+ "[ipv4]",
359
+ "method=auto",
360
+ "never-default=true",
361
+ "[ipv6]",
362
+ "method=auto",
363
+ "never-default=true",
364
+ ].join("\n"),
365
+ mode: 0o600,
366
+ });
367
+ }
368
+
369
+ return files;
370
+ }),
371
+ systemdUnits,
372
+ packages,
373
+ modules,
374
+ users: [{ name: "core", sshAuthorizedKeys }],
375
+ sshUsers: [{ name: Cluster.sshUsername, groups: ["sudo"] }],
376
+ },
377
+ emptyOpts
378
+ );
379
+
380
+ const roles: string[] = nodeGroup.roles || [];
381
+
382
+ let isController = false;
383
+ for (const role of roles) {
384
+ if (role === "controller") {
385
+ isController = true;
386
+ break;
387
+ }
388
+ }
389
+
390
+ if (isController) {
391
+ roles.push("etcd");
392
+ }
393
+
394
+ return {
395
+ id: server.id,
396
+ hostname,
397
+ roles,
398
+ ipv4Address: server.ipv4Address,
399
+ privateIpv4Address: serverNetwork.ip,
400
+ ipv6Address: server.ipv6Address,
401
+ labels: nodeGroup.labels ?? {},
402
+ taints: nodeGroup.taints ?? [],
403
+ username: Cluster.sshUsername,
404
+ privateKey: fcosHost.sshPrivateKeys.apply((sshPrivateKeys) => {
405
+ for (const username in sshPrivateKeys) {
406
+ if (username === Cluster.sshUsername) {
407
+ // eslint-disable-next-line security/detect-object-injection
408
+ return sshPrivateKeys[username].privateKeyOpenssh;
409
+ }
410
+ }
411
+
412
+ throw new Error(`No private key found for user ${Cluster.sshUsername}`);
413
+ }),
414
+ fcosHost,
415
+ };
416
+ });
417
+
418
+ results.push({
419
+ node,
420
+ depends: this.configureFcosNode(sshPrivateKey, server, node),
421
+ });
422
+ }
423
+ }
424
+
425
+ return results;
426
+ });
427
+ }
428
+
429
+ private configureFcosNode(
430
+ sshPrivateKey: pulumi.Input<string>,
431
+ server: pulumi.Output<hcloud.Server>,
432
+ node: pulumi.Input<Node>
433
+ ): pulumi.Output<pulumi.Resource> {
434
+ const emptyOpts = this.opts();
435
+
436
+ return pulumi.all([server.name, server.ipv4Address, node]).apply(([nodeName, ipv4Address, node]) => {
437
+ const connection: ssh.ConnectionArgs = {
438
+ host: ipv4Address,
439
+ username: Cluster.rescueSshUsername,
440
+ privateKey: sshPrivateKey,
441
+ initialDelay: 10000,
442
+ retries: 20,
443
+ };
444
+
445
+ const fcosInstallScriptPathRemote = "/tmp/fcos-install.sh";
446
+ const fcosConfigPathRemote = "/tmp/fcos-config.ign";
447
+
448
+ const fcosInstallScript = new ssh.File(
449
+ `${nodeName}-fcos-install-script`,
450
+ {
451
+ connection,
452
+ changeToken: "",
453
+ src: { file: path.join(__dirname, "assets", "fcos-install.sh") },
454
+ dst: fcosInstallScriptPathRemote,
455
+ },
456
+ { ...emptyOpts, dependsOn: server, ignoreChanges: ["connection", "src"] }
457
+ );
458
+
459
+ const fcosConfigFile = new ssh.File(
460
+ `${nodeName}-fcos-config`,
461
+ {
462
+ connection,
463
+ changeToken: "",
464
+ src: { data: node.fcosHost.ignitionConfig },
465
+ dst: fcosConfigPathRemote,
466
+ },
467
+ { ...emptyOpts, dependsOn: server, ignoreChanges: ["connection", "src"] }
468
+ );
469
+
470
+ const fcosInstall = new ssh.Exec(
471
+ `${nodeName}-fcos-install`,
472
+ {
473
+ connection,
474
+ changeToken: "",
475
+ command: [
476
+ `chmod +x ${fcosInstallScriptPathRemote}`,
477
+ `${fcosInstallScriptPathRemote} /dev/sda ${fcosConfigPathRemote}`,
478
+ ].join(" && "),
479
+ },
480
+ { ...emptyOpts, dependsOn: [fcosInstallScript, fcosConfigFile], ignoreChanges: ["connection"] }
481
+ );
482
+
483
+ return new ssh.Exec(
484
+ `${nodeName}-fcos-up`,
485
+ {
486
+ connection: {
487
+ host: ipv4Address,
488
+ username: Cluster.sshUsername,
489
+ privateKey: node.privateKey,
490
+ initialDelay: 30000,
491
+ retries: 20,
492
+ },
493
+ changeToken: "",
494
+ command: "ls /",
495
+ },
496
+ { ...emptyOpts, dependsOn: [fcosInstall], ignoreChanges: ["connection"] }
497
+ );
498
+ });
499
+ }
500
+ }
@@ -1,5 +1,5 @@
1
1
  import { ClusterArgs, Cluster } from "./cluster";
2
2
  import { KubernetesArgs, Kubernetes } from "./kubernetes";
3
3
  import { WireguardArgs, Wireguard } from "./wireguard";
4
+
4
5
  export { ClusterArgs, Cluster, KubernetesArgs, Kubernetes, WireguardArgs, Wireguard };
5
- //# sourceMappingURL=index.d.ts.map