See https://secure.phabricator.com/chatlog/channel/6/?at=156708 for naming discussion, if anyone objects or comes up with something better before this lands. Leading alternatives were "Startchart", "Proclaim" and "Fleet"/"Armada".
Almanac is a service/host/device directory, similar to SMC at Facebook or the DNS system. Major objects are something like:
- Hosts/Devices -- a physical (or maybe virtual) device which may have services on it, like box001.datacenter.company.com.
- Services -- a named service, like www.company.com.
Rough, a service is defined as a group of devices. For example, the www.company.com service might be the HTTP load balancers lb001.company.com, lb002.company.com, and lb003.company.com.
Clients can ask it DNS-like questions like:
- How do I connect to www.company.com?
- How do I connect to mysql.phabricator.company.com, for writing?
Administrators can use the web UI to change the answers to these questions (e.g., bring servers up / down, move hosts in/out of service pools, change host attributes to control masters/slaves).
In the short term, we want to be able to deploy Phabricator across multiple machines easily. Some installs are nearing the effective one-machine scalability limit when using hosted repositories, and we want to define a large service cluster for SAAS. Putting this information inside Phabricator will let us do this in a reasonable way, and solve tangential issues like allowing machines to identify one another for authentication.
In the mid term, we want to deploy SAAS, and this tooling can make it easier to manage hosts, let us build Phage, etc. Drydock and Harbormaster can also benefit from centralized host management, the ability to define pools, etc.
In the long term, this could be a general purpose-service.
A tangential but reasonable feature is to support host monitoring/detection (like Reticle) so we can show if a service is up or down and report basics like deployed software versions, at a minimum. Eventually this could be more full-featured.