collective/collective.hostout — Issue #15: Become more Fabric like
Author: djay
Created: 2011-12-04 23:54:11+00:00
State: open

In order to have hostout used more widely I'm looking at how to refactor hostout to use more of the builtin features of Fabric. Fabric has changed a lot recently so it now makes this possible. It would be good to be able to distribute a single fabfile.py which can be used to deploy buildouts or bootstrap a machine either locally or remotely.

Aiming for ability to run like $ fab deploy

To make this happen we need

- a way to specify on the commandline which buildout to deploy to. Fabric uses hosts and roles. whereas buildout uses a buildout which is a host:path. We could use symbolic hostnames that map to a host:path or perhaps use roles?

- a place to read in a hostout config file before a command is run and make that info available in the env. This could be done via a "with hostoutenv():" type statement.

- a replacement for how the plugin system works. At the moment the hostout runner will load several fabfiles and combine the commands list into one, with commands overridden commands being called via a special _getattr_ from the higher level plugins. Perhaps a simpler system is needed. One issue with the current system is that the order of execution is determined by the order of plugins specified in buildout.