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