Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates > by-pkgid > b50d8ee6d7871fcc13c0677a9364ed59 > files > 338

bcfg2-doc-1.3.0-1.fc17.noarch.rpm



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>The Bcfg2 Server &mdash; Bcfg2 1.3.0 documentation</title>
    
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.3.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/sidebar.js"></script>
    <link rel="shortcut icon" href="../_static/favicon.ico"/>
    <link rel="top" title="Bcfg2 1.3.0 documentation" href="../index.html" />
    <link rel="up" title="Detailed Bcfg2 Architecture" href="index.html" />
    <link rel="next" title="The Literal Configuration Specification" href="config-spec.html" />
    <link rel="prev" title="The Bcfg2 Client" href="client.html" />
 
<link rel="stylesheet" href="../_static/bcfg2.css" type=""/>

  </head>
  <body>

<div style="text-align: left; padding: 10px 10px 15px 15px">
<a href="../index.html"><img src="../_static/bcfg2_logo.png" border="0" alt="sampledoc"/></a>
</div>

    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="config-spec.html" title="The Literal Configuration Specification"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="client.html" title="The Bcfg2 Client"
             accesskey="P">previous</a> |</li>
	<li><a href="../index.html">home</a> |&nbsp;</li>
	<!--<li><a href="../search.html">search</a> |&nbsp;</li>-->
	<li><a href="../help/index.html">help</a> |&nbsp;</li>
	<li><a href="../contents.html">documentation </a> &raquo;</li>

          <li><a href="../contents.html" >Bcfg2 documentation 1.3.0</a> &raquo;</li>
          <li><a href="index.html" accesskey="U">Detailed Bcfg2 Architecture</a> &raquo;</li> 
      </ul>
    </div>
  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="the-bcfg2-server">
<span id="architecture-server"></span><h1>The Bcfg2 Server<a class="headerlink" href="#the-bcfg2-server" title="Permalink to this headline">¶</a></h1>
<p>The Bcfg2 server is responsible for taking a network description and
turning it into a series of configuration specifications for particular
clients. It also manages probed data and tracks statistics for clients.</p>
<p>The Bcfg2 server takes information from two sources when generating
client configuration specifications. The first is a pool of metadata that
describes clients as members of an aspect-based classing system. That is,
clients are defined in terms of aspects of their behavior. The other is
a file system repository that contains mappings from metadata to literal
configuration. These are combined to form the literal configuration
specifications for clients.</p>
<div class="section" id="the-configuration-specification-construction-process">
<h2>The Configuration Specification Construction Process<a class="headerlink" href="#the-configuration-specification-construction-process" title="Permalink to this headline">¶</a></h2>
<p>As we described in the previous section, the client connects to the server
to request a configuration specification. The server uses the client&#8217;s
metadata and the file system repository to build a specification that
is tailored for the client. This process consists of the following steps:</p>
<ul>
<li><p class="first"><strong>Metadata Lookup</strong></p>
<p>The server uses the client&#8217;s IP address to initiate the metadata
lookup. This initial metadata consists of a (profile, image) tuple. If
the client already has metadata registered, then it is used. If not,
then default values are used and stored for future use. This metadata
tuple is expanded using some profile and class definitions also included
in the metadata. The end result of this process is metadata consisting
of hostname, profile, image, a list of classes, a list of attributes
and a list of bundles.</p>
</li>
<li><p class="first"><strong>Abstract Configuration Construction</strong></p>
<p>Once the server has the client metadata, it is used to create
an abstract configuration. An abstract configuration contains
all of the configuration elements that will exist in the final
specification <strong>without</strong> any specifics. All entries will be typed
(i.e. the tagname will be one of Package, Path, Action, etc) and will
include a name. These configuration entries are grouped into bundles,
which document installation time interdependencies.</p>
<p>Here is an example of an abstract configuration entry:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Package</span> <span class="na">name=</span><span class="s">&#39;openssh-server&#39;</span><span class="nt">/&gt;</span>
</pre></div>
</div>
</li>
<li><p class="first"><strong>Configuration Binding</strong></p>
<p>The abstract configuration determines the structure of the client
configuration, however, it doesn&#8217;t yet contain literal configuration
information. After the abstract configuration is created, each
configuration entry must be bound to a client-specific value. The Bcfg2
server uses plugins to provide these client-specific bindings. The Bcfg2
server core contains a dispatch table that describes which plugins can
handle requests of a particular type. The responsible plugin is located
for each entry. It is called, passing in the configuration entry and
the client&#8217;s metadata. The behavior of plugins is explicitly undefined,
so as to allow maximum flexibility. The behaviours of the stock plugins
are documented elsewhere in this manual. Once this binding process
is completed, the server has a literal, client-specific configuration
specification. This specification is complete and comprehensive; the
client doesn&#8217;t need to process it at all in order to use it. It also
represents the totality of the configuration specified for the client.</p>
<p>Here is the entry from above once it has been bound to its literal
specification (In this case, using the Packages plugin).</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Package</span> <span class="na">name=</span><span class="s">&quot;openssh-server&quot;</span> <span class="na">version=</span><span class="s">&quot;auto&quot;</span> <span class="na">type=</span><span class="s">&quot;deb&quot;</span><span class="nt">/&gt;</span>
</pre></div>
</div>
</li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">The Bcfg2 Server</a><ul>
<li><a class="reference internal" href="#the-configuration-specification-construction-process">The Configuration Specification Construction Process</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="client.html"
                        title="previous chapter">The Bcfg2 Client</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="config-spec.html"
                        title="next chapter">The Literal Configuration Specification</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/architecture/server.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="config-spec.html" title="The Literal Configuration Specification"
             >next</a> |</li>
        <li class="right" >
          <a href="client.html" title="The Bcfg2 Client"
             >previous</a> |</li>
	<li><a href="../index.html">home</a> |&nbsp;</li>
	<!--<li><a href="../search.html">search</a> |&nbsp;</li>-->
	<li><a href="../help/index.html">help</a> |&nbsp;</li>
	<li><a href="../contents.html">documentation </a> &raquo;</li>

          <li><a href="../contents.html" >Bcfg2 documentation 1.3.0</a> &raquo;</li>
          <li><a href="index.html" >Detailed Bcfg2 Architecture</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2009-2013, Narayan Desai.
      Last updated on Mar 20, 2013.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>
  </body>
</html>