local mirko = import "../../kube/mirko.libsonnet"; local kube = import "../../kube/kube.libsonnet"; local smsgw = import "smsgw.libsonnet"; local teleimg = import "teleimg.libsonnet"; local frab = import "frab.libsonnet"; local pretalx = import "pretalx.libsonnet"; local cebulacamp = import "cebulacamp.libsonnet"; local site = import "site.libsonnet"; local capacifier = import "capacifier.libsonnet"; { hswaw(name):: mirko.Environment(name) { local env = self, local cfg = self.cfg, cfg+: { smsgw: smsgw.cfg, teleimg: teleimg.cfg, frab: frab.cfg, pretalx: pretalx.cfg, cebulacamp: cebulacamp.cfg, site: site.cfg, capacifier: capacifier.cfg, }, components: { smsgw: smsgw.component(cfg.smsgw, env), teleimg: teleimg.teleimg(cfg.teleimg, env), lelegram: teleimg.lelegram(cfg.teleimg, env), frab: frab.component(cfg.frab, env), pretalx: pretalx.component(cfg.pretalx, env) { cronjob: null, }, cebulacamp: cebulacamp.component(cfg.cebulacamp, env), site: site.component(cfg.site, env), capacifier: capacifier.component(cfg.capacifier, env), }, }, prod: self.hswaw("hswaw-prod") { cfg+: { smsgw+: { secret+: { twilio_token: std.base64(std.split(importstr "secrets/plain/prod-twilio-token", "\n")[0]), }, webhookFQDN: "smsgw-webhook-prod.hswaw.net", }, teleimg+: { webFQDN: "teleimg.hswaw.net", secret+: { telegram_token: std.base64(std.split(importstr "secrets/plain/prod-telegram-token", "\n")[0]), }, }, frab+: { storageClassName: "waw-hdd-redundant-3", webFQDN: "frab.hackerspace.pl", secret+: { secretKeyBase: std.base64(std.split(importstr "secrets/plain/prod-frab-smtp-password", "\n")[0]), smtpPassword: std.base64(std.split(importstr "secrets/plain/prod-frab-secret-key-base", "\n")[0]), }, }, pretalx+: { storageClassName: "waw-hdd-redundant-3", webFQDN: "cfp.cebula.camp", smtpPassword: std.base64(std.split(importstr "secrets/plain/prod-pretalx-smtp-password", "\n")[0]), s3+: { credsSecret: import "secrets/plain/prod-pretalx-s3.json", }, }, cebulacamp+: { webFQDN: "cebula.camp", }, site+: { webFQDN: "new.hackerspace.pl", }, capacifier+: { ldapBindPassword: std.split(importstr "secrets/plain/prod-capacifier-password", "\n")[0], }, }, }, admins: kube.RoleBinding("admins") { metadata+: { namespace: "hswaw-prod", }, roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "ClusterRole", name: "system:admin-namespace", }, subjects: [ kube.User("ar@hackerspace.pl"), kube.User("radex@hackerspace.pl"), ], }, }