I am interested in making an in house web ui to ease some of the management tasks I face with administrating many servers; think Canonical's Landscape. This means doing things like, applying package updates simultaneously across servers, perhaps installing a custom .deb (I use ubuntu/debian.) Reviewing server logs, executing custom scripts, viewing status information for all my servers. I hope to be able to reuse existing command line tools instead of rewriting the exact same operations in a different language myself.

I really want to develop something that allows me to continue managing on the ssh level but offers the power of a web interface for easily applying the same infrastructure wide changes. They should not be mutually exclusive.

What are some recommended programming languages to use for doing this kind of development and tying it into a web ui? Why do you recommend the language(s) you do?

I am not an experienced programmer, but view this as an opportunity to scratch some of my own itches as well as become a better programmer. I do not care specifically if one language is harder than another, but am more interested in picking the best tools for the job from the beginning.

Feel free to recommend any existing projects that already integrate management of many systems into a single cohesive web ui, except Landscape (not free,) Ebox (ebox control center not free) and webmin (I don't like it, feels clunky and does not integrate well with the "debian way" of maintaining a server, imo. Also, only manages one system.)

Thanks for any ideas!


I am not looking to reinvent the wheel of systems management, I just want to "glue" many preexisting and excellent tools together where possible and appropriate; this is why I wonder about what languages can interact well with pre-existing command line tools, while making them manageable with a web ui.


Python (by far) is the best all-around language for this type of stuff. It's cross-platform and is used for everything from 3D games to web apps nowadays. Investing the time learning it will give you a very portable skill. Python also has a very clean syntax and easy to pick up the basics.

  • Python is really the way to go. For distributing ssh command look at Fabric. For web frontend I would look at Django. But why reinvent the wheel? 3dinfluence has listed alot of great tools that exists allready. – Espennilsen Mar 18 '10 at 8:11

Kneejerk response is to support 3dinfluence's ideas that the thing you want has already been invented.

If you really want to develop, instead of creating Yet Another Web Management Interface, why not contribute to Webmin and write a better interface? Or a "Debian" plugin that works the way you want?

I would never suggest someone not contribute to the open source environment, but the energy that you are suggesting could be so much more useful to an existing project that needs help.

  • I am not opposed to contributing to a pre-existing project if it seems to be doing what I want and works well with debian environment. So far I have not found anything that does this free, and does it in a web ui built to maintain many systems, as opposed to just one. My main issue with webmin is that it is designed only to work for the server it's installed on; it is not designed to be a web tool to manage many servers. If I am wrong on that please correct me. – Brendan Martens Mar 12 '10 at 21:42

I would echo what other people are saying here. Use existing tools, and then write some glue between them if you want. I use Zabbix (used to be Zenoss) for monitoring, Bcfg2 with Subversion for configuration management, and Trac for ticketing and documentation.

I often "tie it all together" in Trac, because it has an excellent API to extend the interface. I've written plugins that allow easy cross-referencing (so if I mention a server in a Trac ticket, it automatically links to the Zenoss status page, for example).

I use Python for all of my glue code because Zenoss, Bcfg2, and Trac are all Python, and Zabbix has a Python API.

Hope that helps!


Ok where to start here.

You're trying to put a bunch of things into a single monolithic interface. Nothing wrong with that but there are many projects that solve all of these problems quite well on their own which you may want to look into before writing something home grown.

Preseeding is a way to pre configure a new install on Debian/Ubuntu. You can also use kickstart but preseeding is the Debian way of doing this. You can set this up so that you have an easily deployable base system image.

Puppet for configuration and change management. This allows you to centrally control what packages are installed and how they are configured across all your different based on the server roles.

Nagios, Icinga, Munin, etc for monitoring your host, services, and infrastructure. I also recommend Cacti for utilization monitoring.

Set up a central syslog server then use Epylog or SEC for event correlation and alerting. Also have a look at octopussy for log monitoring.

  • Sure, I am aware of just about all of the tools you mentioned, but I want to integrate them into a web ui in which I can easily manage them across all my servers, I am not interested in a web ui that only shows operation for the server its installed on. Integrating with existing tools is ideal, where possible and appropriate... But my question is, how to best do that while keeping in mind I want to be able to manage it via a web ui. Good thoughts, but really doesn't answer my question at all. – Brendan Martens Mar 12 '10 at 21:20
  • well all of these tools are made to manage and monitor a whole infrastructure and not just the computer that it's installed on. So I guess I'm missing your point there. But you asked for suggestions of projects that already do these things so that's what I gave you. No one is going to be able to pick a programming language for you as that's purely subjective. – 3dinfluence Mar 12 '10 at 21:28
  • I asked for suggestions on a language with which to integrate these existing projects into a web ui, said web ui would manage many servers. What you are suggesting are projects that exist to do one task, or a few very specific tasks. Yes, some of the projects you mention work across many servers already, but are, a: not free, b: not integrated into a web ui. When I said to suggest existing projects, I meant projects that already integrate systems management with a web ui, such as landscape, webmin, or spacewalk. – Brendan Martens Mar 12 '10 at 21:36
  • All the projects I just suggested are 100% free and open source. – 3dinfluence Mar 12 '10 at 21:40
  • Mmm I thought you mentioned monit in there, confused that with munin (monit is free, but its web interface, mmonit, for managing many monits is not.) The major issue is that they are not integrated into a single cohesive web ui. That is the main pursuit here. – Brendan Martens Mar 12 '10 at 21:45

Not the answer you're looking for? Browse other questions tagged or ask your own question.