From 599f97b63e66985e92e4c410b4252cc7fa03e30c Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Thu, 16 Mar 2006 21:55:04 +0000 Subject: Documentation updates Add bundle and client support to groups-to-dot.py git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1801 ce84e21b-d406-0410-9b95-82705330c041 --- doc/architecture.xml | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) (limited to 'doc/architecture.xml') diff --git a/doc/architecture.xml b/doc/architecture.xml index 779b57611..2fb1b3c98 100644 --- a/doc/architecture.xml +++ b/doc/architecture.xml @@ -427,4 +427,127 @@ + +
+ Design Considerations + + + This section will discuss several aspects of the design of + bcfg2, and the particular use cases that motivated + them. Initially, this will consist of a discussion of the system + metadata, and the intended usage model for package indices as + well. + + +
+ System Metadata + + + Bcfg2 system metadata describes the underlying patterns in + system configurations. It describes commonalities and + differences between these specifications in a rigorous way. The + groups used by bcfg2's metadata are responsible for + differentiating clients from one another, and building + collections of allocatable configuration. + + + + The Bcfg2 metadata system has been designed with several + high-level goals in mind. Flexibility and precision are + paramount concerns; no configuration should be undescribable + using the constructs present in the bcfg2 repository. We have + found (generally the hard way) that any assumptions about the + inherent simplicity of configuration patterns tend to be + wrong, so obscenely complex configurations must be + representable, even if these requirements seem illogical + during the implementation. + + + + In particular, we wanted to streamline several operations that + commonly occurred in our environment. + + + + + Copying one node's profile to another + node. + + + In many environments, many nodes are instances of a common + configuration specification. They all have similar roles + and software. In our environment, desktop machines were + the best example of this. Other than strictly per-host + configuration like SSH keys, all desktop machines use a + common configuration specification. This trivializes the + process of creating a new desktop machine. + + + + Creating a specialized version of a + currently existing profile. + + + + In environments with highly varied configurations, + departmental infrastructure being a good example, "another + machine like X but with extra software" is a common + requirement. For this reason, it must be trivially + possible to inherit most of a configuration specification + from some more generic source, while being able to + describe overriding aspects in a convenient fashion. + + + + + Compose several pre-existing configuration aspects to + create a new profile. + + + + The ability to compose configuration aspects allows the + easy creation of new profiles based on a series of + predefined set of configuration specification + fragments. The end result is more agility in environments + where change is the norm. + + + + + + In order for a classing system to be comprehensive, it must be + usable in complex ways. The Bcfg2 metadata system has + constructs that map cleanly to first-order logic. This implies + that any complex configuration pattern can be represented (at + all) by the metadata, as first-order logic is provably + comprehensive. (There is a discussion later in the document + describing the metadata system in detail, and showing how it + corresponds to first-order logic) + + + + These use cases motivate several of the design decisions that + we made: + + + + + + There must be a many to one correspondence between clients + and groups. Membership in a given profile group must imbue + a client with all of its configuration properties. + + + +
+ +
+ Package Management + + + The interface provided in the bcfg2 repository for package + specification was designed with automation in mind. The goal + was to +
+
\ No newline at end of file -- cgit v1.2.3-1-g7c22