games/factorio: make more configurable
This makes the server fully configurable, and adds the contents of
example JSON configs as the defaults for all servers.
Change-Id: I8ff3e66a586a9db3acb9721810c8c5aa13072b4b
diff --git a/games/factorio/kube/factorio.libsonnet b/games/factorio/kube/factorio.libsonnet
index 57d5bf4..7d08ad7 100644
--- a/games/factorio/kube/factorio.libsonnet
+++ b/games/factorio/kube/factorio.libsonnet
@@ -17,6 +17,42 @@
rconPort: 2137,
rconPassword: "farts",
+ // Configuration options that will get serialized into
+ // --config config.ini
+ factorioConfig: {
+ // There is no documentation for this file, but you can check
+ // config.ini in any installed Factorio data directory for a
+ // sample.
+ //
+ // This uses std.manifestIni, so to create a file containing:
+ // version=9
+ // [other]
+ // verbose-logging=true
+ // You would set the following:
+ // main: {
+ // version: "9",
+ // },
+ // other: {
+ // "verbose-logging": "true",
+ // },
+ },
+ // Configuration options that will get serialized into
+ // --server-settings server-settings.json.
+ serverSettings: (import "config/server-settings.libsonnet") {
+ visibility+: {
+ public: false,
+ lan: false,
+ },
+ },
+ // Configuration options that will get serialized into
+ // --map-settings map-settings.json.
+ mapSettings: (import "config/map-settings.libsonnet") {
+ },
+ // Configuration options that will get serialized into
+ // --map-gen-settings map-gen-settings.json.
+ mapGenSettings: (import "config/map-gen-settings.libsonnet") {
+ },
+
tag: "latest",
image: "registry.k0.hswaw.net/q3k/factorio:" + cfg.tag,
resources: {
@@ -78,6 +114,9 @@
"mod { name: \"%s\" version: \"%s\" }" % [m.name, m.version],
for m in cfg.mods
]),
+ "server-settings.json": std.manifestJson(cfg.serverSettings),
+ "map-settings.json": std.manifestJson(cfg.mapSettings),
+ "map-gen-settings.json": std.manifestJson(cfg.mapGenSettings),
},
},
@@ -115,6 +154,9 @@
"/entrypoint.sh",
"--rcon-port", std.toString(cfg.rconPort),
"--rcon-password", cfg.rconPassword,
+ "--server-settings", "/factorio/config/server-settings.json",
+ "--map-settings", "/factorio/config/map-settings.json",
+ "--map-gen-settings", "/factorio/config/map-gen-settings.json",
],
ports_: {
client: { containerPort: 34197 },
@@ -123,6 +165,7 @@
volumeMounts_: {
data: { mountPath: "/data" },
mods: { mountPath: "/factorio/mods" },
+ config: { mountPath: "/factorio/config" },
},
resources: cfg.resources,
},