Server configuration management system (Master's thesis)

Developed for Riga Technical University (RTU) in 2021
Tags: Python Typer Paramiko SSH DevOps IaC

What if someone made a shell based alternative to Ansible?

More information

Tools like Ansible are pretty great for managing the configuration across many servers. However, Ansible in particular depends on a Python interpreter being present on the remote system. What if someone were to create a solution which is not dependent on the presence of Python, one that would work purely through a SSH session, in the remote shell, much like a regular human user would?

What I did

For my Master's degree, that's exactly what I did. I set out to create such a proof of concept solution, with the help of the excellent Typer CLI library for Python, as well as Paramiko to establish SSH connections and send commands, as well as react to their output. This meant that my solution only needed Python running on the machine that was trying to control the remote servers and in practice it worked decently well.

In the end, I was able to deploy entire container clusters running either Docker Swarm or K3s, install system packages, manage users and files, as well as do things like deploying arbitrary Docker Compose or Kubernetes environment descriptors.

What I learnt

While I think the tool would need a few more hundred or thousand person-hours invested in it before it'd be production ready, I'd say that it was definitely a valid proof of concept and earned me my degree and a 10/10 score, given that I also had demonstrations of deploying and then later load testing an actual system with it.

Page rendered in: 0.01 seconds