Description:

Have you ever thought how many solutions and products around us ? Billion of billions and it is growing, yes, right now. Software has or doesn't have API, it can be easily automated or not, software can be good or bad, but we (IT people) should work with all of them.

Some weeks ago I woke up and I saw that I am encircled by many of IT tasks even at home (I must mention that I have two laptops and one server). Some tasks aren't important, some tasks are executed every day, some tasks I launch remotely. For scheduling all those tasks I use: Jenkins, Python, shell, cron, SSH etc. Those tools are spread across of users, servers, schedulers (>_<). I described those tasks in my Wiki. I become a System Administrator for my home infrastructure.

I decided to solve all my problems and I generated requirements:

  • It shouldn't be a heavy solution. I planned to install it on my gateway which is a enter point for other hosts.
  • All my scripts and automats must be integrated in that system without any problems.
  • I work with data mining and I have tasks with circular dependencies, those tasks should be clearly visible.
  • Fast remote access and execution of complex tasks by one command (without any movements like: "open management panel", "type commands", "wait for results").
  • Triggers by events.

Jenkins satisfies to almost all these requirements and I used it together with Mattermost and Hubot at the begining of my way. But the problem was that the Jenkins was on the server and it couldn't have been used when server was in shutdown state. And yes, I would have to create Jenkins tasks or write Hubot plugins for every slight issue.

I searched those requirements in Google without any serious hopes, but it is wonderful world with wonderful people which do wonderful things. I found Stackstorm, which seems be a perfect tool for my needs.

I will not describe all features that software has, but I should mention:

  • It can works inside Docker.
  • It can works with any of your scripts.
  • It can works with cross-dependencies with help of Mistral (one YAML file can represent a complex workflow with dependencies).
  • It has a lightweight web panel for quick understanding.

Below I show my daily and weekly workflows (are not completed yet) and a list of Hubot commands.

Daily tasks:

daily

Weekly tasks:

weekly

Hubot commands:

hubot