This module was created to fill the need for *two-dimensional* environment/host management.
* What's an environment? An environment is a development or server location where a full Drupal build (possibly including multiple hosts) is set up. In our work, we tend to have
1) a primary 'dev' environment (site.dev.ourwork.com),
2) local environments for each developer (site.dev.local),
3) a staging environment (staging.site.com),
4) a live site (www.site.com), etc.
But each of these environments can have multiple sites/hosts, making the number of actual hosts to track and toggle grow exponentially.
The domain_access module does a good job of tracking hosts, but in only one environment.

The goal for now is not to manage deployment between multiple environments, but rather to allow for managing content between the environments, and more generally to have code- and user-level context awareness of each environment. The module is currently a barebones API, to be expanded upon for various use cases. I'm interested in hearing what use cases people have.

Envts has no UI yet, but simply allows other modules to define environments with a hook. (Anyone is welcome to create a UI for the module, since my time is limited!)

TERMINOLOGY USED:
'envt': a code environment with multiple sites, such as 'dev', 'live', 'local'
'site': a site NAME, possibly used in multiple environments, e.g. 'primary', 'secondary'
'host': the domain of a site, e.g. www.site.com or site.dev.local, preferably matching the /sites/ folder and $base_root (without http:// prefix)

The module defines a hook_define_envts(), allowing other modules to define site/host groupings.
The hook can return a 2-dimensional list of environments and sites/hosts, a 1-dimensional list of sites/hosts, or a single site/host. The module builds a global list of all the defined environments, to be used with several built-in helper functions or other custom code. (More info on the hook's usage in the readme.txt file.)

The module also creates a block with a simple table showing defined and current environment and site.

I built this module for my particular use cases but am eager to hear other possible uses and suggestions for improvement. My time is also limited so code contributions are most welcome!

Blog post about the module

Project Information

Downloads