Skip to content

Orchestrator

The Orc (orchestrator) module is the heart of the project.

It is what manages the process of game server deployment for users.


Design Objectives

  • Extremely lightweight.
  • REST API managed
  • Deploy/control game containers.
  • Abstracted from the game server/container platform to allow stack evolution.

Software Stack Diagram

*This may change as technologies & skills evolve.

Software Stack


Dev Notes

HTML Response Codes


Links to various project-related resources.

GitHub GitHub GitHub GitHub


Features

  • User file backups
  • Update to new deployment architecture.
  • RESTapi (v1) - Plan/recipies
  • Security - api-key integration
  • Start/Stop scheduler
  • RESTapi (v1) - custom configurations
  • Server deployment (v2) - custom configurations
  • Persistent server data - Keep server data for updates & future releases.
  • RESTapi (v1)
  • Server deployment (v1)

Roadmap

Here are some planned features

  • Security - Add fail2ban to REST API
  • Security - Users & Audit Logging
  • RESTapi (v1) - Console

Release Notes

1.2.11

  • CHANGE 🛠 Updated to latest OS/package combinations.

1.2.10

  • ADDED 🆕 Ability to import any game servers

1.2.9

  • ADDED 🆕 Added backup save to /home/peon/backup
  • ADDED 🆕 Ability to download user and config data for a game server (via /home/peon/backup).

1.2.8

  • BUGFIX 🪲 Enforced UID 1000 on all folders in the server directory (on create and on docker-compose action)

1.2.7

  • ADDED 🆕 Ability to update the game server using the API.

1.2.6

  • LOGGING 💬 Improve logging response to handle bad JSON/missing files on plan load.

1.2.5

  • BUGFIX 🪲 Repaired an issue with a plan not seeing a description

1.2.4

  • CHANGED 🛠 Updated how the cli tool references files inside the container

1.2.3

  • BUGFIX 🪲 Make better alert when the folder already exists, not action not supported

1.2.2

  • ADDED 🆕 Ability to make custom REST API key through env vars.

1.2.1

  • ADDED 🆕 Added skip flag to Server PUT to force bypass of actions (if required)
  • BUGFIX 🪲 Added return on successful create when not start is requested.

1.2.0

âš¡ IMPACT RELEASE âš¡

  • CHANGED 🛠 Changed URL path from /api/1.0 to /api/v1
  • CHANGED 🛠 Added sort to get_plans

1.1.0

âš¡ IMPACT RELEASE âš¡

  • CHANGED 🛠 Moved logging into container logs
  • ADDED 🆕 Added DEV_MODE flag to enable/disable logging/dev mode.

1.0.5

  • BUGFIX 🪲 Fixed API destroy + eradicate of a server.

1.0.4

  • ADDED 🪲 Check if the environment variable HOST_DIR is empty.
  • ADDED 🆕 Added a clean on failure when a server creation is triggered.
  • ADDED 🆕 Added an API flag noclean to disable clean on failure.
  • BUGFIX 🪲 Fixed issue where failures on docker compose commands did not get handled by API correctly.
  • BUGFIX 🪲 Fixed an issue where generic failure was being reported back via API when plans were being generated.
  • LOGGING 💬 Added additional step logging for debug logging to assist in fault finding.

1.0.3

  • BUGFIX 🪲 Updated API for use with Discord bot.

1.0.2

  • CHANGE 🛠 Re-enabled stop scheduler.
  • REMOVED ✂ Disabled flask debug mode (as it causes issues with the scheduler)

1.0.1

  • BUGFIX 🪲 Removed docker-compose create from API when no start is selected.
  • BUGFIX 🪲 Updated to docker compose from docker-compose paradigm

âš¡ IMPACT RELEASE âš¡

1.0.0

  • CHANGE 🛠 Plans - Reworked entire plans module for docker-compose architecture
  • CHANGE 🛠 Servers - Reworked entire servers module for docker-compose architecture
  • CHANGE 🛠 API - Updated API for docker-compose architecture.
  • BUGFIX 🪲 All - fixed several issues after rework
  • ADDED 🆕 warcamp - cleanup
  • ADDED 🆕 get_warcamp - check container state and update state accordingly.
  • CHANGE 🛠 CURRENT_TASK API - Deploy server from API call. (Untested server create function)
  • ADDED 🆕 API - Plan - Get required settings
  • CHANGE 🛠 Change to SVN download for directory (plans)
  • CHANGE 🛠 Moved to docker compose based model for better re-usability/clarity.
  • CHANGE 🛠 API - Removed servers/server marshall flow for more versatile response handling
  • BUGFIX 🪲 API - Plans - Fixed the get and update from server plans

0.3.2

  • ADDED 🆕 Added /app/bin to the path and added peon cli module into orc.
  • CHANGE 🛠 Make API key configurable

0.3.1

  • CHANGE 🛠 Rework Orchestrator app to leverage the docker.sock
  • CHANGE 🛠 Moving to init script init/peon.orc, for pre-flight checks.
  • REMOVED ✂ Removed SSH check on boot from python3 main.py
  • ADDED 🆕 Configurable docker socket path.
  • ADDED 🆕 Added VERSION environment variable into the container.

0.3.0

  • CHANGE 🛠 Change the docker file to support using docker.sock socket file to manage docker (from SSH)

0.2.17

  • BUGFIX 🪲 Remove schedule on manual stop
  • CHANGE 🛠 Validate epoch time input for scheduler epoch time

0.2.16

  • BUGFIX 🪲 Server create returned false error due to change error dict handler

0.2.15

  • BUGFIX 🪲 Scheduler vs Start/Stop

0.2.14

  • BUGFIX 🪲 Scheduler v1.0 - Bugfix (server stop is now properly scheduled)

0.2.13

  • ADDED 🆕 Scheduler - v1.0 - Added simple start & delayed stop in scheduler

0.2.12

  • CHANGE 🛠 API Response - Server config

0.2.11

  • ADDED 🆕 PUBLIC_IP - added to container variables

0.2.10

  • Logging - Added devMode switch

0.2.9

  • ADDED 🆕 UI - Added MOTD to container login

0.2.8

  • CHANGE 🛠 Base images were pulled to get the latest versions & app was rebuilt on those
  • BUGFIX 🪲 Incorrect parameter reference in server create

0.2.7

  • SECURITY 🔓 Inital CORS implementation
  • SECURITY 🔓 Initial api-key requirement implementation

0.2.6

  • ADDED 🆕 API - Server - Destroy & Eradicate

0.2.5

  • ADDED 🆕 API - Server - Reworked to include actions into the path
  • ADDED 🆕 API - Server - Added get with metrics

0.2.4

  • ADDED 🆕 API - Server Get - reworked to provide both container & server state

0.2.3

  • ADDED 🆕 API - Auto download latest plan version when the server is deployed

0.2.2

  • ADDED 🆕 API - Plans get list & update from Peon project list

0.2.1

  • BUGFIX 🪲 Enforced description & settings on [post]servers

0.2.0

  • ADDED 🆕 Added custom config handler
  • CHANGE 🛠 Allows configuration of environment variables in the container (via API)
  • ADDED 🆕 Can supply json/txt files via API
  • ADDED 🆕 Added persistent description

0.1.6

  • ADDED 🆕 Added handler for config folder
  • ADDED 🆕 Moved game server logs into the game server directory

0.1.5

  • INITIALISED ✈ The first iteration of server create (API)