Server Commander
tags: automation cron jenkins linux travis
12 Jul 2017 04:46
Here's a problem I'd like was already solved:
Be able to manage and run "tasks" on a Linux server. More specifically:
- There should be a WEB interface where:
- I could define commands or tasks that the server is capable of doing
- I could schedule tasks to run at specific times (like cron)
- The tasks/commands should be (optionally) parametrized
- The tasks/commands should be (optionally) stored in GitHub and/or a database
- The task runs should not overlap with each other (i.e. when the previous run is still in progress don't start the new one) — configurable
- The task configuration should include:
- the command to run
- task timeout — the task should be killed after the specified time
- environment variables to set for the task
- max CPU/memory/disk to use (optional)
- number of times to retry on failure
- what to do on success and failure — e-mail, webhook and trigger another task
- directory to run the command in: I can specify one, or a temporary one is created for each run and cleared after the run
- user to run the command as: I can specify one, or a temporary user is created for each run and cleared after the run
- The task run view should include
- colored command output
- command exit code: OK/FAIL
- resources used by the task (optional)
- time the task took, time the task started and ended
- environment variables
- link to next/previous run and a button to re-run
- The code should be free and open and extremely easy to install
- There should be an error log in the UI to track all the jobs failures
- Misconfigured tasks should not take the machine down — there should be some level of monitoring — don't start new jobs when load is high or disk is almost full, etc
- One should be able to have a nice dashboard with selected tasks for easy launching
What I describe here is to some extent already covered by some of the following:
- Jenkins https://jenkins.io/
- Travis-CI https://travis-ci.com/
- Rundeck http://rundeck.org/
- Minicron https://github.com/jamesrwhite/minicron/
Here's what's wrong with them:
- Jenkins' UI is to complicated for simple tasks, also it feel very heavy
- in Travis-CI you specify the tasks in your code, not in Travis, also it's not software you run locally
- My experience with Rundeck is it doesn't work out of the box, I could debug it, but I didn't want to, also UI is a bit too complex
- Minicron is way too simple and (currently) only allows you to run jobs through ssh (not locally)
To reiterate I'd like:
- A web UI for cron, that's also
- a bit like Jenkins in a way you can see the output of each of the command runs
- and have ability to sandbox the processes it runs
- looks nice and is easy to install and doesn't require maintenance