UbuntuManagementConsoleSpec

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

This specification describes the Ubuntu Management Console (UMC). It's a system for managing many servers at a time.

Rationale

Ubuntu (due to its Debian heritage) contains the mechanisms to make managing a large number of servers a breeze. A central repository containing meta packages and configuration packages can simplify management greatly. However, setting up a repository is not trivial for the average Linux admin. This should be fixed.

Use cases

  • James manages a server park of a few hundred servers. Most of them are web servers serving the exact same web pages, others are postgresql slaves serving the same database schemas, etc. Maintaining and updating all these identical servers is a chore and either takes so much time that other things are neglected or the chores are themselves neglected. James wishes there was a way he could handle all the servers in a centralized way.

Scope

  • Package installation, updating, and removal
  • Distribution of common configuration files
  • Monitoring of above actions in case of errors

Design

UMC will consist of a web based interface where nodes can be set up and tasks can be assigned to each node. Tasks can also depend on other tasks. Each node will install a package unique for itself (e.g. grumpy.company.com will have a umc-grumpy.company.com package installed) which will depend on the tasks the node should handle. These tasks will in turn depend on packages and may contain configuration files as well. All of this be result in proper debian packages being generated and put into a central repository configured on all nodes. At regular intervals the nodes will automatically do an update/upgrade cycle and thus the changes will be committed. The UMC will also be able to perform certain tasks on the servers via SSH (e.g. force an update/upgrade, restart a service, etc.)

Ultimately UMC should be the one stop place for managing the servers, so tight integration with monitoring services like nagios and munin, LDAP (for user administration), etc. should be easy to do, but for GoogleSoC2007 the metapackage management system will be the priority.

Implementation

Code

I currently have a hacky version of this lying around written in Python on top of the Django web development framework. It

  • allows creation of nodes and tasks,
  • assigning tasks to other tasks recursively
  • lets any number of nodes be assigned to any number of tasks
  • generates proper Debian packages with the changelog listing the changes made in the UI. (e.g. " * User 'sh' removed dependency 'apache2'").

What is actually missing is (and hence will be the actual GoogleSoC2007 project)

  • making the existing code not-quite-so-hacky Smile :-)

  • authentication (in the UI bit)
  • GPG signing of Release files
  • Making it look good.
  • Templating system for the configuration files (currently a file is uploaded to the web ui and put verbatim into the deb. I'd like it to e.g. insert the node's hostname and such)
  • Import Packages file from official repository in order to provide a list of packages to choose from.
  • Maybe port it all to twisted since it is in Ubuntu main.

Data preservation and migration

TBD

Unresolved issues

BoF agenda and discussion


CategorySpec

UbuntuManagementConsoleSpec (last edited 2008-08-06 16:27:50 by localhost)