forked from hswaw/hscloud
personal/q3k: add openrct2
Change-Id: I2526d75c577be6712342a60cc5c7c90b21d5242d
This commit is contained in:
parent
d0ec2c6ac7
commit
262c6e0361
1 changed files with 156 additions and 0 deletions
156
personal/q3k/openrct2.jsonnet
Normal file
156
personal/q3k/openrct2.jsonnet
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
local kube = import "../../kube/kube.libsonnet";
|
||||||
|
|
||||||
|
{
|
||||||
|
local top = self,
|
||||||
|
|
||||||
|
Server(name):: {
|
||||||
|
local server = self,
|
||||||
|
local cfg = server.cfg,
|
||||||
|
|
||||||
|
cfg:: {
|
||||||
|
namespace: error "namespace must be set",
|
||||||
|
storageClassName: "waw-hdd-redundant-3",
|
||||||
|
|
||||||
|
image: "openrct2/openrct2-cli:0.2.4",
|
||||||
|
save: error "save must be set",
|
||||||
|
|
||||||
|
password: "", # disabled if empty.
|
||||||
|
|
||||||
|
admins: {
|
||||||
|
q3k: "a6a3727038eb53b35ad28ba88dc80810f94c6c3d",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
metadata:: {
|
||||||
|
namespace: cfg.namespace,
|
||||||
|
},
|
||||||
|
|
||||||
|
volumeClaim: kube.PersistentVolumeClaim(name) {
|
||||||
|
metadata+: server.metadata,
|
||||||
|
spec+: {
|
||||||
|
storageClassName: cfg.storageClassName,
|
||||||
|
accessModes: [ "ReadWriteOnce" ],
|
||||||
|
resources: {
|
||||||
|
requests: {
|
||||||
|
storage: "5Gi",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
config: kube.ConfigMap(name + "-config") {
|
||||||
|
metadata+: server.metadata,
|
||||||
|
|
||||||
|
// admins with local server as co-admin
|
||||||
|
local admins = cfg.admins + {
|
||||||
|
openrct2: "",
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
"users.json": std.manifestJson([
|
||||||
|
{ hash: admins[name], name: name, groupId: 0 }
|
||||||
|
for name in std.objectFields(admins)
|
||||||
|
]),
|
||||||
|
"run.sh": |||
|
||||||
|
set -ex
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
SAVES=/home/openrct2/.config/OpenRCT2/save/autosave
|
||||||
|
if [ -d "$SAVES" ]; then
|
||||||
|
echo "Save directory exists, checking for autosaves..."
|
||||||
|
latest="$SAVES/$(ls -Art "$SAVES" | tail -n 1)"
|
||||||
|
if [ -f "$latest" ]; then
|
||||||
|
echo "Found new autosave: $latest"
|
||||||
|
export OPENRCT2_SAVE="$latest"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Running save $OPENRCT2_SAVE..."
|
||||||
|
if [ ! -z "$OPENRCT2_PASSWORD" ]; then
|
||||||
|
echo "Running with password..."
|
||||||
|
openrct2-cli host "$OPENRCT2_SAVE" --password "$OPENRCT2_PASSWORD"
|
||||||
|
else
|
||||||
|
echo "Running without password..."
|
||||||
|
openrct2-cli host "$OPENRCT2_SAVE"
|
||||||
|
fi
|
||||||
|
|||
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
deployment: kube.Deployment(name) {
|
||||||
|
metadata+: server.metadata,
|
||||||
|
spec+: {
|
||||||
|
template+: {
|
||||||
|
spec+: {
|
||||||
|
volumes_: {
|
||||||
|
data: kube.PersistentVolumeClaimVolume(server.volumeClaim),
|
||||||
|
config: kube.ConfigMapVolume(server.config),
|
||||||
|
},
|
||||||
|
|
||||||
|
initContainers: [
|
||||||
|
kube.Container("configure-users") {
|
||||||
|
image: cfg.image,
|
||||||
|
command: [
|
||||||
|
"/bin/bash", "-c",
|
||||||
|
"cp /config/users.json /home/openrct2/.config/OpenRCT2/users.json",
|
||||||
|
],
|
||||||
|
volumeMounts_: {
|
||||||
|
data: { mountPath: "/home/openrct2/.config/OpenRCT2" },
|
||||||
|
config: { mountPath: "/config" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
containers_: {
|
||||||
|
server: kube.Container("server") {
|
||||||
|
image: cfg.image,
|
||||||
|
env_: {
|
||||||
|
OPENRCT2_SAVE: cfg.save,
|
||||||
|
OPENRCT2_PASSWORD: cfg.password,
|
||||||
|
},
|
||||||
|
command: [
|
||||||
|
"/bin/bash", "/config/run.sh",
|
||||||
|
],
|
||||||
|
ports_: {
|
||||||
|
client: { containerPort: 11753 },
|
||||||
|
},
|
||||||
|
volumeMounts_: {
|
||||||
|
data: { mountPath: "/home/openrct2/.config/OpenRCT2" },
|
||||||
|
config: { mountPath: "/config" },
|
||||||
|
},
|
||||||
|
resources: {
|
||||||
|
requests: {
|
||||||
|
cpu: "500m",
|
||||||
|
memory: "100Mi",
|
||||||
|
},
|
||||||
|
limits: {
|
||||||
|
cpu: "1",
|
||||||
|
memory: "1Gi",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
svc: kube.Service(name) {
|
||||||
|
metadata+: server.metadata,
|
||||||
|
target_pod:: server.deployment.spec.template,
|
||||||
|
spec+: {
|
||||||
|
ports: [
|
||||||
|
{ name: "client", port: 11753, targetPort: 11753, protocol: "TCP" },
|
||||||
|
],
|
||||||
|
type: "LoadBalancer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
servers: {
|
||||||
|
test: top.Server("openrct2-test") {
|
||||||
|
cfg+: {
|
||||||
|
namespace: "personal-q3k",
|
||||||
|
save: "https://bit.do/openrct2-bpb",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
Loading…
Reference in a new issue