Aedifico
Aedifico will be composed of 3 parts and a lot of fun.
- A Python module which will provide a programmatically way to manipulate configuration files and command line program. It will provide features like adding a virtual host, a DNS entry, a subversion repository, a Trac instance.
- An easy to use and to extends daemon to manage various servers (web, dns, mail, svn). It will use the Python modules of the previous line to provide a web service interface.
- A web interface that will use the daemon services to provide to the end user a simple way to create easily projects of hosting accounts.
Aedifico Modules
The aedifico modules is the root of all the project. It's here where all the functions of the project will be defined, it will be functions to create a database, a unix user, to a commit rights to a user on a svn repository, etc.
It will provide a easy way to sysadmin (or anyone who manage a server) to write automation scripts. For example, here is an example script on how to add an hosting account on a server :
#!/usr/bin/env python
import aedifico.conf.unix
import aedifico.conf.bind
import aedifico.conf.apache
def add_hosting(username, domain_name, quota):
user = aedifico.conf.unix.create_user(username)
vhost = aedifico.conf.apache.add_vhost(username, domain_name)
dns = aedifico.conf.bind.add_a(name, ip)
# Etc...
Aedifico Daemon
The daemon goal is to provide a web service interface to the various actions proposed by the aedifico modules. The first version of the web services will use the REST protocol.
If you would like to contribute, you could for example help us to experiment and to implement other protocols like SOAP, XML-RPC, TCP/IP sockets, GData, BEEP, etc.
Web Interface
The web interface will be language independent (as soon as you can communicate with the daemon). It will provide an easy way to the end user to manage a server.
Error handling
The modules and the daemon will not try to provide error correction but only error handling. For example, when we will try to add an already existing user to MySQL the daemon will raise an exception. It's the web app that will have to check that the user don't already exists with a function like mysql_get_users_list().
The daemon will only have to execute valid actions at the system or applications level. This point is essential to have a purely deterministic behavior from the daemon. It will be to the web app to propose an alternate name to the user or to prompt him to enter another one.
