Sophie

Sophie

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

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>Packages &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="Plugins" href="../index.html" />
    <link rel="next" title="Pkgmgr" href="pkgmgr.html" />
    <link rel="prev" title="NagiosGen" href="nagiosgen.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="pkgmgr.html" title="Pkgmgr"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="nagiosgen.html" title="NagiosGen"
             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" >The Bcfg2 Server</a> &raquo;</li>
          <li><a href="../index.html" accesskey="U">Plugins</a> &raquo;</li> 
      </ul>
    </div>
  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="packages">
<span id="server-plugins-generators-packages"></span><h1>Packages<a class="headerlink" href="#packages" title="Permalink to this headline">¶</a></h1>
<p class="versionadded">
<span class="versionmodified">New in version 1.0.0.</span></p>
<p>This page documents the Packages plugin. Packages is an alternative to
<a class="reference internal" href="pkgmgr.html#server-plugins-generators-pkgmgr"><em>Pkgmgr</em></a> for specifying package
entries for clients. Where Pkgmgr explicitly specifies package entry
information, Packages delegates control of package version information to
the underlying package manager, installing the latest version available
through those channels.</p>
<div class="section" id="limiting-sources-to-groups">
<h2>Limiting sources to groups<a class="headerlink" href="#limiting-sources-to-groups" title="Permalink to this headline">¶</a></h2>
<p><a class="reference internal" href="#id1">sources.xml</a> processes <tt class="docutils literal"><span class="pre">&lt;Group&gt;</span></tt> and <tt class="docutils literal"><span class="pre">&lt;Client&gt;</span></tt> tags just like
Bundles. In addition to any groups or clients specified that way,
clients must be a member of the appropriate architecture group as
specified in a Source stanza. In total, in order for a source to be
associated with a client, the client must be in any explicit groups or
clients specified in <a class="reference internal" href="#id1">sources.xml</a>, and any specified architecture
groups.  If <a class="reference internal" href="#magic-groups">&#8220;Magic Groups&#8221;</a> are enabled, then the client must be a
member of a matching magic group as well.</p>
<p>Memberships in architecture groups is needed so that Packages can map
software sources to clients. There is no other way to handle this than
to impose membership in the appropriate architecture group.</p>
<p>When multiple sources are specified, clients are associated with each
source to which they apply (based on group memberships, as described
above). Packages and dependencies are resolved from all applicable
sources.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">To recap, a client needs to be a member of the <strong>Architecture</strong>
group and any other groups defined in your
<a class="reference internal" href="#id1">sources.xml</a> file in order for the client to be
associated to the proper sources.  If you are using
<a class="reference internal" href="#server-plugins-generators-packages-magic-groups"><em>&#8220;Magic Groups&#8221;</em></a>, then a
client must also be a member of the appropriate OS group.</p>
</div>
</div>
<div class="section" id="magic-groups">
<span id="server-plugins-generators-packages-magic-groups"></span><h2>&#8220;Magic Groups&#8221;<a class="headerlink" href="#magic-groups" title="Permalink to this headline">¶</a></h2>
<p class="deprecated">
<span class="versionmodified">Deprecated since version 1.3.0.</span></p>
<p>Packages has the ability to use a feature known as &#8220;magic groups&#8221;; it
is the only plugin to use that feature. Most plugins operate based on
client group memberships, without any concern for the particular names
chosen for groups by the user. The Packages plugin is the sole
exception to this rule. Packages needs to &#8220;know&#8221; two different sorts
of facts about clients. The first is the basic OS/distro of the
client, enabling classes of sources. The second is the architecture of
the client, enabling sources for a given architecture. In addition to
these magic groups, each source may also specify non-magic groups to
limit the source&#8217;s applicability to group member clients.</p>
<table border="1" class="docutils">
<colgroup>
<col width="25%" />
<col width="31%" />
<col width="44%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Source</th>
<th class="head">OS Group</th>
<th class="head">Architecture</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>Apt</td>
<td>debian</td>
<td>i386</td>
</tr>
<tr class="row-odd"><td>Apt</td>
<td>ubuntu</td>
<td>amd64</td>
</tr>
<tr class="row-even"><td>Apt</td>
<td>nexenta</td>
<td>&nbsp;</td>
</tr>
<tr class="row-odd"><td>Apt</td>
<td>apt</td>
<td>&nbsp;</td>
</tr>
<tr class="row-even"><td>Yum</td>
<td>redhat</td>
<td>i386</td>
</tr>
<tr class="row-odd"><td>Yum</td>
<td>centos</td>
<td>x86_64</td>
</tr>
<tr class="row-even"><td>Yum</td>
<td>fedora</td>
<td>&nbsp;</td>
</tr>
<tr class="row-odd"><td>Yum</td>
<td>yum</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<p>Magic OS groups are disabled by default in Bcfg2 1.3 and greater.  If
you require magic groups, you can enable them by setting
<tt class="docutils literal"><span class="pre">magic_groups</span></tt> to <tt class="docutils literal"><span class="pre">1</span></tt> in the <tt class="docutils literal"><span class="pre">[packages]</span></tt> section of
<tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt>.</p>
<p>Magic groups will be removed in a future release.</p>
<p>Magic architecture groups cannot be disabled.</p>
</div>
<div class="section" id="setup">
<h2>Setup<a class="headerlink" href="#setup" title="Permalink to this headline">¶</a></h2>
<p>Three basic steps are required for Packages to work properly.</p>
<ol class="arabic simple">
<li>Create Packages/<a class="reference internal" href="#id1">sources.xml</a>. This file should look
approximately  like the  example  below, and  describes both  which
software  repositories  should  be  used,  and  which  clients  are
eligible to use each one.</li>
<li>Ensure that clients are members of the proper groups. Each client
should be a member of all of the groups listed in the <cite>sources.xml</cite>
(like ubuntu-intrepid or centos-5.2 in the following examples), one
of the architecture groups listed in the source configuration
(i386, amd64 or x86_64 in the following examples), and one of the
magic groups listed above, if magic groups are enabled. &#8216;&#8217;&#8216;Failure
to do this will result in the source either not applying to the
client, or only architecture independent packages being made
available to the client.&#8217;&#8216;&#8217;</li>
<li>Add Package entries to bundles.</li>
<li>Sit back and relax, as dependencies are resolved, and automatically
added to client configurations.</li>
</ol>
<div class="section" id="sources-xml">
<h3>sources.xml<a class="headerlink" href="#sources-xml" title="Permalink to this headline">¶</a></h3>
<p><tt class="docutils literal"><span class="pre">sources.xml</span></tt> is where all package sources are configured for the
Packages plugin.  It processes <tt class="docutils literal"><span class="pre">&lt;Group&gt;</span></tt> and <tt class="docutils literal"><span class="pre">&lt;Client&gt;</span></tt> tags just like
Bundles. The primary element in <tt class="docutils literal"><span class="pre">sources.xml</span></tt> is the Source tag:</p>
<dl class="element" id="element:Source">
<dt id="element:Source">
<!--[element:Source]--><em>element</em> <strong>Source</strong><a class="headerlink" href="#element:Source" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><p class="first"></p>
<dl class="last docutils" id="complexType:SourceType">
<dt>Attributes:</dt>
<dd><table border="1" class="first last docutils">
<colgroup>
<col width="10%" />
<col width="50%" />
<col width="20%" />
<col width="10%" />
<col width="10%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Name</th>
<th class="head">Description</th>
<th class="head">Values</th>
<th class="head">Required</th>
<th class="head">Default</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><span class="target" id="attribute:SourceType:type"></span><tt class="docutils literal"><span class="pre">type</span></tt></td>
<td><blockquote class="first last">
<div>The type of the repository.  This corresponds to the
Packages plugin driver that will handle the source.</div></blockquote>
</td>
<td><tt class="docutils literal"><span class="pre">yum</span></tt> | <tt class="docutils literal"><span class="pre">apt</span></tt> | <tt class="docutils literal"><span class="pre">pac</span></tt></td>
<td>Yes</td>
<td>None</td>
</tr>
<tr class="row-odd"><td><span class="target" id="attribute:SourceType:essential"></span><tt class="docutils literal"><span class="pre">essential</span></tt></td>
<td><blockquote class="first last">
<div>Include essential packages from this repo by default (i.e.,
without needing to specify them in a bundle).  This only
applies to sources with <a class="reference internal" href="#attribute:SourceType:type"><tt class="xref xml xml-attribute docutils literal"><span class="pre">type</span></tt></a> =
<tt class="docutils literal"><span class="pre">apt</span></tt>.</div></blockquote>
</td>
<td><tt class="docutils literal"><span class="pre">true</span></tt> | <tt class="docutils literal"><span class="pre">false</span></tt></td>
<td>No</td>
<td><tt class="first last docutils literal"><span class="pre">true</span></tt></td>
</tr>
<tr class="row-even"><td><span class="target" id="attribute:SourceType:pulp_id"></span><tt class="docutils literal"><span class="pre">pulp_id</span></tt></td>
<td><blockquote class="first last">
<div>The <a class="reference internal" href="#pulp-source-support"><em>Pulp</em></a> repository ID
for this repo.  This only applies to sources with
<a class="reference internal" href="#attribute:SourceType:type"><tt class="xref xml xml-attribute docutils literal"><span class="pre">type</span></tt></a> = <tt class="docutils literal"><span class="pre">yum</span></tt>.  Due to the
amount of data that can be queried directly from Pulp,
there&#8217;s rarely a need to supply other attributes.</div></blockquote>
</td>
<td><a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></td>
<td>No</td>
<td>None</td>
</tr>
<tr class="row-odd"><td><span class="target" id="attribute:SourceType:rawurl"></span><tt class="docutils literal"><span class="pre">rawurl</span></tt></td>
<td><blockquote class="first last">
<div>The raw URL to the (single) repository defined by this
source. <a class="reference internal" href="#element:Component"><tt class="xref xml xml-element docutils literal"><span class="pre">Component</span></tt></a> and
<a class="reference internal" href="#attribute:SourceType:version"><tt class="xref xml xml-attribute docutils literal"><span class="pre">version</span></tt></a> are ignored if this is
given.</div></blockquote>
</td>
<td><a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></td>
<td>No</td>
<td>None</td>
</tr>
<tr class="row-even"><td><span class="target" id="attribute:SourceType:recommended"></span><tt class="docutils literal"><span class="pre">recommended</span></tt></td>
<td><blockquote class="first last">
<div>Include packages recommended as dependencies by APT.  This
only applies to sources with
<a class="reference internal" href="#attribute:SourceType:type"><tt class="xref xml xml-attribute docutils literal"><span class="pre">type</span></tt></a> = <tt class="docutils literal"><span class="pre">apt</span></tt>.  You must
regenerate the Packages cache after changing this attribute.</div></blockquote>
</td>
<td><tt class="docutils literal"><span class="pre">true</span></tt> | <tt class="docutils literal"><span class="pre">false</span></tt></td>
<td>No</td>
<td><tt class="first last docutils literal"><span class="pre">false</span></tt></td>
</tr>
<tr class="row-odd"><td><span class="target" id="attribute:SourceType:url"></span><tt class="docutils literal"><span class="pre">url</span></tt></td>
<td><blockquote class="first last">
<div><p>The base URL to use when generating URLs for this source.
If <a class="reference internal" href="#attribute:SourceType:url"><tt class="xref xml xml-attribute docutils literal"><span class="pre">url</span></tt></a> is used, you must also
provide the <a class="reference internal" href="#element:Arch"><tt class="xref xml xml-element docutils literal"><span class="pre">Arch</span></tt></a> tag, at least one
<a class="reference internal" href="#element:Component"><tt class="xref xml xml-element docutils literal"><span class="pre">Component</span></tt></a> tag, and the
<a class="reference internal" href="#attribute:SourceType:version"><tt class="xref xml xml-attribute docutils literal"><span class="pre">version</span></tt></a> attribute.  You must not
specify <a class="reference internal" href="#attribute:SourceType:rawurl"><tt class="xref xml xml-attribute docutils literal"><span class="pre">rawurl</span></tt></a>. For each
combination of component and Arch tag, a URL is created in
the format:</p>
<div class="highlight-python"><pre>&lt;url&gt;/&lt;version&gt;/&lt;component&gt;/&lt;arch&gt;</pre>
</div>
</div></blockquote>
</td>
<td><a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></td>
<td>No</td>
<td>None</td>
</tr>
<tr class="row-even"><td><span class="target" id="attribute:SourceType:version"></span><tt class="docutils literal"><span class="pre">version</span></tt></td>
<td><blockquote class="first last">
<div>The OS version this source applies to.  This is used to
generate URLs if the <a class="reference internal" href="#attribute:SourceType:url"><tt class="xref xml xml-attribute docutils literal"><span class="pre">url</span></tt></a>
attribute is given, and ignored otherwise.</div></blockquote>
</td>
<td><a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></td>
<td>No</td>
<td>None</td>
</tr>
</tbody>
</table>
</dd>
<dt>Child elements:</dt>
<dd><ul class="first last">
<li><dl class="element" id="element:Component">
<dt id="element:Component">
<!--[element:Component]--><em>element</em> <strong>Component</strong><a class="headerlink" href="#element:Component" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div><p>Components are used to build multiple repository URLs from
a single <a class="reference internal" href="#element:Source"><tt class="xref xml xml-element docutils literal"><span class="pre">Source</span></tt></a> tag.  This is only
meaningful if the <a class="reference internal" href="#attribute:SourceType:url"><tt class="xref xml xml-attribute docutils literal"><span class="pre">url</span></tt></a>
attribute is specified; see that attribute above for more
detail.</p>
</div></blockquote>
<p class="last"><strong>Component</strong> takes only text content, which may be the following values: <a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></p>
</dd>
</dl>

</li>
<li><dl class="element" id="element:Arch">
<dt id="element:Arch">
<!--[element:Arch]--><em>element</em> <strong>Arch</strong><a class="headerlink" href="#element:Arch" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div><p>The architecture(s) of the repository.  A client must be a
member of one of the listed architecture groups in order
for this source to apply to the client.  Additionally, if
the <a class="reference internal" href="#attribute:SourceType:url"><tt class="xref xml xml-attribute docutils literal"><span class="pre">url</span></tt></a> attribute is
specified, the <a class="reference internal" href="#element:Arch"><tt class="xref xml xml-element docutils literal"><span class="pre">Arch</span></tt></a> tag is used to generate
URLs.  See <a class="reference internal" href="#attribute:SourceType:url"><tt class="xref xml xml-attribute docutils literal"><span class="pre">the</span> <span class="pre">url</span> <span class="pre">attribute</span></tt></a> for more detail.</p>
</div></blockquote>
<p class="last"><strong>Arch</strong> takes only text content, which may be the following values: <a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></p>
</dd>
</dl>

</li>
<li><dl class="element" id="element:GPGKey">
<dt id="element:GPGKey">
<!--[element:GPGKey]--><em>element</em> <strong>GPGKey</strong><a class="headerlink" href="#element:GPGKey" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div><p>The GPG key(s) for the repository.  This only applies to
sources with <a class="reference internal" href="#attribute:SourceType:type"><tt class="xref xml xml-attribute docutils literal"><span class="pre">type</span></tt></a> = <tt class="docutils literal"><span class="pre">yum</span></tt>.
If GPG keys are specified, then GPG checking will be
automatically enabled for the repository, both on the
Bcfg2 server (if <a class="reference internal" href="#native-yum-libraries"><em>yum libraries</em></a> are in use) and on the Bcfg2
client (if you use
<a class="reference internal" href="#server-plugins-generators-packages"><em>Packages</em></a> to
<a class="reference internal" href="#generating-client-configs"><em>generate your Yum config</em></a>).</p>
</div></blockquote>
<p class="last"><strong>GPGKey</strong> takes only text content, which may be the following values: <a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></p>
</dd>
</dl>

</li>
<li><dl class="element" id="element:Options">
<dt id="element:Options">
<!--[element:Options]--><em>element</em> <strong>Options</strong><a class="headerlink" href="#element:Options" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div><p>Arbitrary options to be used in the repository
configuration.</p>
</div></blockquote>
<dl class="last docutils" id="complexType:RepoOptionsType">
<dt>Attributes:</dt>
<dd><table border="1" class="first last docutils">
<colgroup>
<col width="10%" />
<col width="50%" />
<col width="20%" />
<col width="10%" />
<col width="10%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head"><p class="first last">Name</p>
</th>
<th class="head"><p class="first last">Description</p>
</th>
<th class="head"><p class="first last">Values</p>
</th>
<th class="head"><p class="first last">Required</p>
</th>
<th class="head"><p class="first last">Default</p>
</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><p class="first last"><span class="target" id="attribute:RepoOptionsType:clientonly"></span><tt class="docutils literal"><span class="pre">clientonly</span></tt></p>
</td>
<td><blockquote class="first last">
<div><p>The options given in this tag will only be used on the Bcfg2
clients, not on the server.</p>
</div></blockquote>
</td>
<td><p class="first last"><p><tt class="docutils literal"><span class="pre">true</span></tt> | <tt class="docutils literal"><span class="pre">false</span></tt></p>
</p>
</td>
<td><p class="first last">No</p>
</td>
<td><p class="first last">None</p>
</td>
</tr>
<tr class="row-odd"><td><p class="first last"><span class="target" id="attribute:RepoOptionsType:serveronly"></span><tt class="docutils literal"><span class="pre">serveronly</span></tt></p>
</td>
<td><blockquote class="first last">
<div><p>The options given in this tag will only be used on the Bcfg2
server, not on the clients.</p>
</div></blockquote>
</td>
<td><p class="first last"><p><tt class="docutils literal"><span class="pre">true</span></tt> | <tt class="docutils literal"><span class="pre">false</span></tt></p>
</p>
</td>
<td><p class="first last">No</p>
</td>
<td><p class="first last">None</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">*</p>
</td>
<td><blockquote class="first last">
<div><p>All other (arbitrary) attributes will be added to the
repository configuration.</p>
</div></blockquote>
</td>
<td><p class="first last">Any</p>
</td>
<td><p class="first last">No</p>
</td>
<td><p class="first last">None</p>
</td>
</tr>
</tbody>
</table>
</dd>
</dl>
</dd>
</dl>

</li>
<li><dl class="element" id="element:Blacklist">
<dt id="element:Blacklist">
<!--[element:Blacklist]--><em>element</em> <strong>Blacklist</strong><a class="headerlink" href="#element:Blacklist" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div><p>Blacklist the given package(s) from the
<a class="reference internal" href="#server-plugins-generators-packages"><em>Packages</em></a> plugin.  This
prevents them from being included in
automatically-resolved dependencies.</p>
</div></blockquote>
<p class="last"><strong>Blacklist</strong> takes only text content, which may be the following values: <a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></p>
</dd>
</dl>

</li>
<li><dl class="element" id="element:Whitelist">
<dt id="element:Whitelist">
<!--[element:Whitelist]--><em>element</em> <strong>Whitelist</strong><a class="headerlink" href="#element:Whitelist" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div><p>If <strong>Whitelist</strong> is specified, <em>only</em> packages listed
will be included by the
<a class="reference internal" href="#server-plugins-generators-packages"><em>Packages</em></a> plugin.</p>
</div></blockquote>
<p class="last"><strong>Whitelist</strong> takes only text content, which may be the following values: <a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></p>
</dd>
</dl>

</li>
</ul>
</dd>
</dl>
</dd>
</dl>

</div>
<div class="section" id="handling-gpg-keys">
<h3>Handling GPG Keys<a class="headerlink" href="#handling-gpg-keys" title="Permalink to this headline">¶</a></h3>
<p class="versionadded">
<span class="versionmodified">New in version 1.2.0.</span></p>
<p>If you have yum libraries installed, Packages can automatically handle
GPG signing keys for Yum and Pulp repositories. (You do not need to
use the native yum resolver; if yum libraries are available, GPG
signing keys can be handled automatically.) Simply specify the URL to
the GPG key(s) for a repository with <a class="reference internal" href="#element:GPGKey"><tt class="xref xml xml-element docutils literal"><span class="pre">GPGKey</span></tt></a> elements:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span>
        <span class="na">rawurl=</span><span class="s">&quot;http://mirror.example.com/centos6-x86_64/RPMS.os&quot;</span><span class="nt">&gt;</span>
  <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
  <span class="nt">&lt;GPGKey&gt;</span>http://mirror.example.com/keys/RPM-GPG-KEY-CentOS-6<span class="nt">&lt;/GPGKey&gt;</span>
<span class="nt">&lt;/Source&gt;</span>
</pre></div>
</div>
<p>More than one <tt class="docutils literal"><span class="pre">&lt;GPGKey&gt;</span></tt> tag can be specified per Source.</p>
<p>With the keys specified thusly, Packages will include the keys in the
generated yum config file, and will ensure that the keys are imported
on the client.</p>
<p>There is no need to specify <tt class="docutils literal"><span class="pre">&lt;GPGKey&gt;</span></tt> tags for <a class="reference internal" href="#pulp-source-support"><em>Pulp sources</em></a>; that data is pulled directly from the Pulp
REST API.</p>
</div>
<div class="section" id="arbitrary-repo-options">
<h3>Arbitrary Repo Options<a class="headerlink" href="#arbitrary-repo-options" title="Permalink to this headline">¶</a></h3>
<p class="versionadded">
<span class="versionmodified">New in version 1.2.3.</span></p>
<p>You can specify arbitrary options to be added to the repository config
on the server side, if you are using the native yum libraries, and on
the client side if you are using the ability of Packages to
automatically generate your Yum config.  To do this, add an
<a class="reference internal" href="#element:Options"><tt class="xref xml xml-element docutils literal"><span class="pre">Options</span></tt></a> tag to a <a class="reference internal" href="#element:Source"><tt class="xref xml xml-element docutils literal"><span class="pre">Source</span></tt></a>; all of its
attributes will be added verbatim to the repository in the generated
config.  For instance:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">rawurl=</span><span class="s">&quot;http://mirror.example.com/centos-6-os&quot;</span><span class="nt">&gt;</span>
  <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
  <span class="nt">&lt;Options</span> <span class="na">proxy=</span><span class="s">&quot;http://proxy.example.com&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/Source&gt;</span>
</pre></div>
</div>
<p>If you are using native yum libraries and need to set options only on
the Bcfg2 server, you can set the
<a class="reference internal" href="#attribute:RepoOptionsType:serveronly"><tt class="xref xml xml-attribute docutils literal"><span class="pre">serveronly</span></tt></a> attribute to &#8220;true&#8221;; or,
if you need to set options only on the client, you can set the
<a class="reference internal" href="#attribute:RepoOptionsType:clientonly"><tt class="xref xml xml-attribute docutils literal"><span class="pre">clientonly</span></tt></a> attribute to &#8220;true&#8221;.  For
instance, if your Bcfg2 server needed to use a proxy to access a repo,
and you wanted to expire metadata caches very quickly on the client,
you could do:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">rawurl=</span><span class="s">&quot;http://mirror.example.com/centos-6-os&quot;</span><span class="nt">&gt;</span>
  <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
  <span class="nt">&lt;Options</span> <span class="na">serveronly=</span><span class="s">&quot;true&quot;</span> <span class="na">proxy=</span><span class="s">&quot;http://proxy.example.com&quot;</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;Options</span> <span class="na">clientonly=</span><span class="s">&quot;true&quot;</span> <span class="na">metadata_expire=</span><span class="s">&quot;0&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/Source&gt;</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="prerequisite-resolution">
<h2>Prerequisite Resolution<a class="headerlink" href="#prerequisite-resolution" title="Permalink to this headline">¶</a></h2>
<p>Packages provides a prerequisite resolution mechanism which has no
analogue in Pkgmgr. During configuration generation, all structures are
processed. After this phase, but before entry binding, a list of packages
and the client metadata instance is passed into Packages&#8217; resolver. This
process determines a superset of packages that will fully satisfy
dependencies of all package entries included in structures, and reports
any prerequisites that cannot be satisfied. This facility should largely
remove the need to use the <a class="reference internal" href="../structures/base.html#server-plugins-structures-base"><em>Base</em></a>
plugin.</p>
<div class="section" id="disabling-dependency-resolution">
<h3>Disabling dependency resolution<a class="headerlink" href="#disabling-dependency-resolution" title="Permalink to this headline">¶</a></h3>
<p class="versionadded">
<span class="versionmodified">New in version 1.1.0.</span></p>
<p>Dependency resolution can be disabled by adding the following setting
to <tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt> in the <tt class="docutils literal"><span class="pre">packages</span></tt> section:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="p">[</span><span class="n">packages</span><span class="p">]</span>
<span class="n">resolver</span><span class="o">=</span><span class="mi">0</span>
</pre></div>
</div>
<p>All metadata processing can be disabled as well:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="p">[</span><span class="n">packages</span><span class="p">]</span>
<span class="n">metadata</span><span class="o">=</span><span class="mi">0</span>
</pre></div>
</div>
<p>This setting implies disabling the resolver.</p>
</div>
<div class="section" id="blacklisting-faulty-dependencies">
<h3>Blacklisting faulty dependencies<a class="headerlink" href="#blacklisting-faulty-dependencies" title="Permalink to this headline">¶</a></h3>
<p>If you encounter an issue with faulty dependency resolution due to
Packages, please file a bug report so that we can fix the problem in
future releases. In the meantime, you can work around this issue by
blacklisting the offending Package in your Sources. The
<a class="reference internal" href="#element:Blacklist"><tt class="xref xml xml-element docutils literal"><span class="pre">Blacklist</span></tt></a> element should immediately follow the
Component section of your source and should look like the following:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Blacklist&gt;</span>unwanted-packagename<span class="nt">&lt;/Blacklist&gt;</span>
</pre></div>
</div>
<p>If you use the built-in <a class="reference internal" href="#generating-client-configs"><em>Yum config generator</em></a>, blacklisted packages will be added to
the <tt class="docutils literal"><span class="pre">exclude</span></tt> list for the source.</p>
</div>
</div>
<div class="section" id="example-usage">
<span id="packages-exampleusage"></span><h2>Example usage<a class="headerlink" href="#example-usage" title="Permalink to this headline">¶</a></h2>
<p>Create a <span class="target" id="id1">sources.xml</span> file in the Packages directory that looks
something like this:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Sources&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;ubuntu-intrepid&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;apt&quot;</span>
            <span class="na">url=</span><span class="s">&quot;http://us.archive.ubuntu.com/ubuntu&quot;</span>
            <span class="na">version=</span><span class="s">&quot;intrepid&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Component&gt;</span>main<span class="nt">&lt;/Component&gt;</span>
      <span class="nt">&lt;Component&gt;</span>universe<span class="nt">&lt;/Component&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>i386<span class="nt">&lt;/Arch&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>amd64<span class="nt">&lt;/Arch&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Sources&gt;</span>
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="versionadded">
<span class="versionmodified">New in version 1.1.0.</span></p>
<p>The default behavior of the Packages plugin is to not make any
assumptions about which packages you want to have added
automatically <a class="footnote-reference" href="#f1" id="id2">[1]</a>. For that reason, neither <strong>Recommended</strong> nor
<strong>Suggested</strong> packages are added as dependencies by default. You
will notice that the default behavior for apt is to add
Recommended packages as dependencies. You can configure the
Packages plugin to add recommended packages by adding the
<a class="reference internal" href="#attribute:SourceType:recommended"><tt class="xref xml xml-attribute docutils literal"><span class="pre">recommended</span></tt></a> attribute, e.g.:</p>
<div class="highlight-xml"><pre>&lt;Source type="apt" recommended="true" ...&gt;</pre>
</div>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">You must regenerate the Packages cache when adding or
removing the recommended attribute (<tt class="docutils literal"><span class="pre">bcfg2-admin</span> <span class="pre">xcmd</span>
<span class="pre">Packages.Refresh</span></tt>).</p>
</div>
<table class="docutils footnote" frame="void" id="f1" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td>Bcfg2 will by default add <strong>Essential</strong> packages to the
client specification. You can disable this behavior by
setting the <a class="reference internal" href="#attribute:SourceType:essential"><tt class="xref xml xml-attribute docutils literal"><span class="pre">essential</span></tt></a>
attribute to <em>false</em>:</td></tr>
</tbody>
</table>
<div class="last highlight-xml"><pre>&lt;Source type="apt" essential="false" ...&gt;</pre>
</div>
</div>
<p>Yum sources can be similarly specified:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Sources&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;centos-5.2&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span>
            <span class="na">url=</span><span class="s">&quot;http://mirror.centos.org/centos/&quot;</span>
            <span class="na">version=</span><span class="s">&quot;5.2&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Component&gt;</span>os<span class="nt">&lt;/Component&gt;</span>
      <span class="nt">&lt;Component&gt;</span>updates<span class="nt">&lt;/Component&gt;</span>
      <span class="nt">&lt;Component&gt;</span>extras<span class="nt">&lt;/Component&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>i386<span class="nt">&lt;/Arch&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
      <span class="nt">&lt;GPGKey&gt;</span>http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<span class="nt">&lt;/GPGKey&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Sources&gt;</span>
</pre></div>
</div>
<p>For sources with a <a class="reference internal" href="#attribute:SourceType:url"><tt class="xref xml xml-attribute docutils literal"><span class="pre">url</span></tt></a> attribute, the
<a class="reference internal" href="#attribute:SourceType:version"><tt class="xref xml xml-attribute docutils literal"><span class="pre">version</span></tt></a> attribute is also necessary.</p>
<p><a class="reference internal" href="#pulp-source-support"><em>Pulp sources</em></a> are very simple to specify
due to the amount of data that can be queried from Pulp itself:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Sources&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;centos-6-x86_64&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">pulp_id=</span><span class="s">&quot;centos-6-x86_64-os&quot;</span><span class="nt">/&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">pulp_id=</span><span class="s">&quot;centos-6-x86_64-updates&quot;</span><span class="nt">/&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">pulp_id=</span><span class="s">&quot;centos-6-x86_64-extras&quot;</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Sources&gt;</span>
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p>There is also a rawurl attribute for specifying sources that
don&#8217;t follow the conventional layout.</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Sources&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;centos5.4&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span>
            <span class="na">rawurl=</span><span class="s">&quot;http://mrepo.ices.utexas.edu/centos5-x86_64/RPMS.os&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span>
            <span class="na">rawurl=</span><span class="s">&quot;http://mrepo.ices.utexas.edu/centos5-x86_64/RPMS.updates&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span>
            <span class="na">rawurl=</span><span class="s">&quot;http://mrepo.ices.utexas.edu/centos5-x86_64/RPMS.extras&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>x86_64<span class="nt">&lt;/Arch&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Sources&gt;</span>
</pre></div>
</div>
<div class="last highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Sources&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;ubuntu-lucid&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;apt&quot;</span>
            <span class="na">rawurl=</span><span class="s">&quot;http://hudson-ci.org/debian/binary&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>amd64<span class="nt">&lt;/Arch&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;apt&quot;</span>
            <span class="na">rawurl=</span><span class="s">http://hudson-ci.org/debian/binary&quot;</span><span class="nt">&gt;</span>
      <span class="nt">&lt;Arch&gt;</span>i386<span class="nt">&lt;/Arch&gt;</span>
    <span class="nt">&lt;/Source&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Sources&gt;</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="configuration-updates">
<h2>Configuration Updates<a class="headerlink" href="#configuration-updates" title="Permalink to this headline">¶</a></h2>
<p>Packages will reload its configuration upon an explicit command via
bcfg2-admin:</p>
<div class="highlight-python"><pre>[0:3711] bcfg2-admin xcmd Packages.Refresh
True</pre>
</div>
<p>During this command (which will take some time depending on the quantity
and size of the sources listed in the configuration file), the server
will report information like:</p>
<div class="highlight-python"><pre>Packages: Updating http://mirror.anl.gov/ubuntu//dists/jaunty/main/binary-i386/Packages.gz
Packages: Updating http://mirror.anl.gov/ubuntu//dists/jaunty/main/binary-amd64/Packages.gz
Packages: Updating http://mirror.anl.gov/ubuntu//dists/jaunty/universe/binary-i386/Packages.gz
Packages: Updating http://mirror.anl.gov/ubuntu//dists/jaunty/universe/binary-amd64/Packages.gz
...
Packages: Updating http://mirror.centos.org/centos/5/extras/x86_64/repodata/filelists.xml.gz
Packages: Updating http://mirror.centos.org/centos/5/extras/x86_64/repodata/primary.xml.gz</pre>
</div>
<p>One line per file download needed. <tt class="docutils literal"><span class="pre">Packages/sources.xml</span></tt> will be
reloaded at this time, so any source specification changes (new or
modified sources in this file) will be reflected by the server at
this point.</p>
<p>This process is much, much faster if you use the <a class="reference internal" href="#native-yum-libraries"><em>native yum
library support</em></a>.</p>
<div class="section" id="soft-reload">
<h3>Soft reload<a class="headerlink" href="#soft-reload" title="Permalink to this headline">¶</a></h3>
<p class="versionadded">
<span class="versionmodified">New in version 1.2.0.</span></p>
<p>A soft reload can be performed to reread the configuration file and
download only missing sources.:</p>
<div class="highlight-python"><pre>[0:3711] bcfg2-admin xcmd Packages.Reload
True</pre>
</div>
<p>This is done automatically any time <a class="reference internal" href="#id1">sources.xml</a> is updated.</p>
</div>
</div>
<div class="section" id="availability">
<h2>Availability<a class="headerlink" href="#availability" title="Permalink to this headline">¶</a></h2>
<p>Support for clients using yum and apt is currently available. Support for
other package managers (Portage, Zypper, IPS, etc) remain to be added.</p>
</div>
<div class="section" id="package-checking-and-verification">
<h2>Package Checking and Verification<a class="headerlink" href="#package-checking-and-verification" title="Permalink to this headline">¶</a></h2>
<p>In order to do disable per-package verification, you will need to use
<a class="reference internal" href="../../configurationentries.html#boundentries"><em>BoundEntries</em></a>, e.g.:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;BoundPackage</span> <span class="na">name=</span><span class="s">&quot;mem-agent&quot;</span> <span class="na">priority=</span><span class="s">&quot;1&quot;</span> <span class="na">version=</span><span class="s">&quot;auto&quot;</span>
              <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">verify=</span><span class="s">&quot;false&quot;</span><span class="nt">/&gt;</span>
</pre></div>
</div>
</div>
<div class="section" id="generating-client-apt-yum-configurations">
<span id="generating-client-configs"></span><h2>Generating Client APT/Yum Configurations<a class="headerlink" href="#generating-client-apt-yum-configurations" title="Permalink to this headline">¶</a></h2>
<p>The Packages plugin has native support for generating Yum and Apt
configs.  Simply add entries like these to the appropriate bundles:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Path</span> <span class="na">name=</span><span class="s">&quot;/etc/yum.repos.d/bcfg2.repo&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Path</span> <span class="na">name=</span><span class="s">&quot;/etc/apt/sources.d/bcfg2&quot;</span><span class="nt">/&gt;</span>
</pre></div>
</div>
<p>If you want to change the path to either of those files, you can set
<tt class="docutils literal"><span class="pre">yum_config</span></tt> or <tt class="docutils literal"><span class="pre">apt_config</span></tt> in <tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt> to the path to the
config files you want to generate:</p>
<div class="highlight-python"><pre>[packages]
yum_config=/etc/yum.repos.d/all.repo
apt_config=/etc/apt/sources.d/all</pre>
</div>
<p>If you need to distribute a config to different places on different
hosts, you can use the <a class="reference internal" href="../structures/altsrc.html#server-plugins-structures-altsrc"><em>altsrc</em></a>
attribute, e.g.:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Bundle</span> <span class="na">name=</span><span class="s">&quot;yum&quot;</span><span class="nt">&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;sles&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Path</span> <span class="na">name=</span><span class="s">&quot;/etc/yum/yum.repos.d/bcfg2.repo&quot;</span>
          <span class="na">altsrc=</span><span class="s">&quot;/etc/yum.repos.d/bcfg2.repo&quot;</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;sles&quot;</span> <span class="na">negate=</span><span class="s">&quot;true&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Path</span> <span class="na">name=</span><span class="s">&quot;/etc/yum.repos.d/bcfg2.repo&quot;</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Bundle&gt;</span>
</pre></div>
</div>
<p>See <a class="reference internal" href="#configuration"><em>Configuration</em></a> for more details on these options.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Support for generating Yum configs was added in 1.2.0, and Apt
configs was added in 1.3.0.  Before that, you could use
<a class="reference internal" href="cfg.html#server-plugins-generators-cfg-genshi"><em>Genshi Templates</em></a> or
<a class="reference internal" href="cfg.html#server-plugins-generators-cfg-cheetah"><em>Cheetah Templates</em></a> to generate your
configs.</p>
</div>
</div>
<div class="section" id="using-native-yum-libraries">
<span id="native-yum-libraries"></span><h2>Using Native Yum Libraries<a class="headerlink" href="#using-native-yum-libraries" title="Permalink to this headline">¶</a></h2>
<p class="versionadded">
<span class="versionmodified">New in version 1.2.0.</span></p>
<p>By default, Bcfg2 uses an internal implementation of Yum&#8217;s dependency
resolution and other routines so that the Bcfg2 server can be run on a
host that does not support Yum itself. If you run the Bcfg2 server on
a machine that does have Yum libraries, however, you can enable use of
those native libraries in Bcfg2 by setting <tt class="docutils literal"><span class="pre">use_yum_libraries</span></tt> to
<tt class="docutils literal"><span class="pre">1</span></tt> in the <tt class="docutils literal"><span class="pre">[packages:yum]</span></tt> section of <tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt>.</p>
<p>Benefits to this include:</p>
<ul class="simple">
<li>Much lower memory usage by the <tt class="docutils literal"><span class="pre">bcfg2-server</span></tt> process.</li>
<li>Much faster <tt class="docutils literal"><span class="pre">Packages.Refresh</span></tt> behavior.</li>
<li>More accurate dependency resolution.</li>
<li>Support for package groups.</li>
</ul>
<p>Drawbacks include:</p>
<ul class="simple">
<li>More disk I/O. In some cases, you may have to raise the open file
limit for the user who runs your Bcfg2 server process, particularly
if you have a lot of repositories.</li>
<li>Resolution of package dependencies is slower in some cases,
particularly after running <tt class="docutils literal"><span class="pre">Packages.Refresh</span></tt>.</li>
<li>If you have a very large number of clients using a very small number
of repositories, using native yum libraries may actually increase
memory usage.</li>
</ul>
<div class="section" id="configuring-the-yum-helper">
<h3>Configuring the Yum Helper<a class="headerlink" href="#configuring-the-yum-helper" title="Permalink to this headline">¶</a></h3>
<p>Due to poor memory management by the Yum API, the long-lived
bcfg2-server process uses an external short-lived helper,
<tt class="docutils literal"><span class="pre">bcfg2-yum-helper</span></tt>, to do the actual Yum API calls for native yum
library support.  By default, Bcfg2 looks for this helper in
<tt class="docutils literal"><span class="pre">$PATH</span></tt>, or, failing that, at <tt class="docutils literal"><span class="pre">/usr/sbin/bcfg2-yum-helper</span></tt>.  If
you have installed the helper elsewhere, you will need to configure
that location with the <tt class="docutils literal"><span class="pre">helper</span></tt> option in the <tt class="docutils literal"><span class="pre">[packages:yum]</span></tt>
section, e.g.:</p>
<div class="highlight-python"><pre>[packages:yum]
use_yum_libraries = 1
helper = /usr/local/sbin/bcfg2-yum-helper</pre>
</div>
</div>
<div class="section" id="setting-yum-options">
<h3>Setting Yum Options<a class="headerlink" href="#setting-yum-options" title="Permalink to this headline">¶</a></h3>
<p>In <tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt>, any options you set in the <tt class="docutils literal"><span class="pre">[packages:yum]</span></tt>
section other than <tt class="docutils literal"><span class="pre">use_yum_libraries</span></tt> and <tt class="docutils literal"><span class="pre">helper</span></tt> will be passed
along verbatim to the configuration of the Yum objects used in the
Bcfg2 server. The following options are set by default, and should not
generally be overridden:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">cachedir</span></tt> is set to a hashed value unique to each distinct Yum
configuration. Don&#8217;t set this unless you know what you&#8217;re doing.</li>
<li><tt class="docutils literal"><span class="pre">keepcache</span></tt> is set to <tt class="docutils literal"><span class="pre">0</span></tt>; there is no benefit to changing this.</li>
<li><tt class="docutils literal"><span class="pre">sslverify</span></tt> is set to <tt class="docutils literal"><span class="pre">0</span></tt>; change this if you know what you&#8217;re
doing.</li>
<li><tt class="docutils literal"><span class="pre">reposdir</span></tt> is set to <tt class="docutils literal"><span class="pre">/dev/null</span></tt> to prevent the server&#8217;s Yum
configuration from being read; do not change this.</li>
</ul>
</div>
<div class="section" id="package-groups">
<h3>Package Groups<a class="headerlink" href="#package-groups" title="Permalink to this headline">¶</a></h3>
<p>Yum package groups are supported by the native Yum libraries. To
include a package group, use the
<a class="reference internal" href="#attribute:PackageStructure:group"><tt class="xref xml xml-attribute docutils literal"><span class="pre">group</span></tt></a> attribute of the
<a class="reference internal" href="pkgmgr.html#element:Package"><tt class="xref xml xml-element docutils literal"><span class="pre">Package</span></tt></a> tag. You can use either the short group ID or
the long group name:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Package</span> <span class="na">group=</span><span class="s">&quot;SNMP Support&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Package</span> <span class="na">group=</span><span class="s">&quot;system-management-snmp&quot;</span><span class="nt">/&gt;</span>
</pre></div>
</div>
<p>By default, only those packages considered the &#8220;default&#8221; packages in a
group will be installed. You can change this behavior using the
<a class="reference internal" href="#attribute:PackageStructure:type"><tt class="xref xml xml-attribute docutils literal"><span class="pre">type</span></tt></a> attribute:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Package</span> <span class="na">group=</span><span class="s">&quot;development&quot;</span> <span class="na">type=</span><span class="s">&quot;optional&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Package</span> <span class="na">group=</span><span class="s">&quot;Administration Tools&quot;</span> <span class="na">type=</span><span class="s">&quot;mandatory&quot;</span><span class="nt">/&gt;</span>
</pre></div>
</div>
<p>Valid values of &#8220;type&#8221; are:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">mandatory</span></tt>: Only install mandatory packages in the group.</li>
<li><tt class="docutils literal"><span class="pre">default</span></tt>: Install default packages from the group (the default).</li>
<li><tt class="docutils literal"><span class="pre">optional</span></tt> or <tt class="docutils literal"><span class="pre">all</span></tt>: Install all packages in the group,
including mandatory, default, and optional packages.</li>
</ul>
<p>See <a class="reference internal" href="#complexType:PackageStructure"><tt class="xref xml xml-type docutils literal"><span class="pre">PackageStructure</span></tt></a> for details.</p>
<p>You can view the packages in a group by category with the <tt class="docutils literal"><span class="pre">yum</span>
<span class="pre">groupinfo</span></tt> command. More information about the different levels can
be found at
<a class="reference external" href="http://fedoraproject.org/wiki/How_to_use_and_edit_comps.xml_for_package_groups#Installation">http://fedoraproject.org/wiki/How_to_use_and_edit_comps.xml_for_package_groups#Installation</a></p>
</div>
<div class="section" id="abstract-package-tags">
<h3>Abstract Package Tags<a class="headerlink" href="#abstract-package-tags" title="Permalink to this headline">¶</a></h3>
<p>If you are using the native Yum libraries, the abstract Package tag
supports several attributes in addition to the standard
<a class="reference internal" href="#attribute:PackageStructure:name"><tt class="xref xml xml-attribute docutils literal"><span class="pre">name</span></tt></a>:</p>
<dl class="complexType" id="complexType:PackageStructure">
<dt id="complexType:PackageStructure">
<!--[complexType:PackageStructure]--><em>complexType</em> <strong>PackageStructure</strong><a class="headerlink" href="#complexType:PackageStructure" title="Permalink to this definition">¶</a></dt>
</dt>
<dd><blockquote class="first">
<div>Abstract description of a package or package group to be
installed.</div></blockquote>
<dl class="last docutils">
<dt>Attributes:</dt>
<dd><table border="1" class="first last docutils">
<colgroup>
<col width="10%" />
<col width="50%" />
<col width="20%" />
<col width="10%" />
<col width="10%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Name</th>
<th class="head">Description</th>
<th class="head">Values</th>
<th class="head">Required</th>
<th class="head">Default</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><span class="target" id="attribute:PackageStructure:group"></span><tt class="docutils literal"><span class="pre">group</span></tt></td>
<td><blockquote class="first last">
<div>Install the named package group. Package groups are only
supported for Yum <a class="reference internal" href="#element:Source"><tt class="xref xml xml-element docutils literal"><span class="pre">Source</span></tt></a> repositories, and
only if the <a class="reference internal" href="#native-yum-libraries"><em>yum libraries</em></a> are in use.  Either <tt class="docutils literal"><span class="pre">group</span></tt>
or <a class="reference internal" href="#attribute:PackageStructure:name"><tt class="xref xml xml-attribute docutils literal"><span class="pre">name</span></tt></a> must be specified.</div></blockquote>
</td>
<td><a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></td>
<td>No</td>
<td>None</td>
</tr>
<tr class="row-odd"><td><span class="target" id="attribute:PackageStructure:name"></span><tt class="docutils literal"><span class="pre">name</span></tt></td>
<td><blockquote class="first last">
<div>Install the named package. Either <tt class="docutils literal"><span class="pre">name</span></tt> or
<a class="reference internal" href="#attribute:PackageStructure:group"><tt class="xref xml xml-attribute docutils literal"><span class="pre">group</span></tt></a> must be specified.</div></blockquote>
</td>
<td><a class="reference external" href="http://www.w3.org/TR/xmlschema-2/#string"><tt class="docutils literal"><span class="pre">string</span></tt></a></td>
<td>No</td>
<td>None</td>
</tr>
<tr class="row-even"><td><span class="target" id="attribute:PackageStructure:type"></span><tt class="docutils literal"><span class="pre">type</span></tt></td>
<td><blockquote class="first last">
<div>The package set to select from a given package group. Only
meaningful if <a class="reference internal" href="#attribute:PackageStructure:group"><tt class="xref xml xml-attribute docutils literal"><span class="pre">group</span></tt></a> is
specified.</div></blockquote>
</td>
<td><tt class="docutils literal"><span class="pre">optional</span></tt> | <tt class="docutils literal"><span class="pre">default</span></tt> | <tt class="docutils literal"><span class="pre">mandatory</span></tt> | <tt class="docutils literal"><span class="pre">all</span></tt></td>
<td>No</td>
<td><tt class="first last docutils literal"><span class="pre">default</span></tt></td>
</tr>
<tr class="row-odd"><td><span class="target" id="attribute:PackageStructure:verify"></span><tt class="docutils literal"><span class="pre">verify</span></tt></td>
<td><blockquote class="first last">
<div>Whether or not to verify the package.</div></blockquote>
</td>
<td><tt class="docutils literal"><span class="pre">true</span></tt> | <tt class="docutils literal"><span class="pre">false</span></tt></td>
<td>No</td>
<td><tt class="first last docutils literal"><span class="pre">true</span></tt></td>
</tr>
</tbody>
</table>
</dd>
<dt>Attribute groups:</dt>
<dd><ul class="first last simple">
<li><a class="reference internal" href="../../genshi-xml.html#attributeGroup:py:genshiAttrs"><tt class="docutils literal"><span class="pre">py:genshiAttrs</span></tt></a></li>
</ul>
</dd>
</dl>
</dd>
</dl>

</div>
</div>
<div class="section" id="pulp-support">
<span id="pulp-source-support"></span><h2>Pulp Support<a class="headerlink" href="#pulp-support" title="Permalink to this headline">¶</a></h2>
<p class="versionadded">
<span class="versionmodified">New in version 1.2.0.</span></p>
<p>Bcfg2 contains explicit support for repositories managed by Pulp
(<a class="reference external" href="http://pulpproject.org/">http://pulpproject.org/</a>).</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Only the Pulp 1.x API is supported at this time.  When the Pulp
2.x API is finalized support will be added for it.</p>
</div>
<p>Due to the amount of data about a repository that can be retrieved
directly from Pulp, the only thing necessary to configure a Pulp repo
is the repo ID, in <a class="reference internal" href="#attribute:SourceType:pulp_id"><tt class="xref xml xml-attribute docutils literal"><span class="pre">pulp_id</span></tt></a>:</p>
<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;Sources&gt;</span>
  <span class="nt">&lt;Group</span> <span class="na">name=</span><span class="s">&quot;centos-6-x86_64&quot;</span><span class="nt">&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">pulp_id=</span><span class="s">&quot;centos-6-x86_64-os&quot;</span><span class="nt">/&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">pulp_id=</span><span class="s">&quot;centos-6-x86_64-updates&quot;</span><span class="nt">/&gt;</span>
    <span class="nt">&lt;Source</span> <span class="na">type=</span><span class="s">&quot;yum&quot;</span> <span class="na">pulp_id=</span><span class="s">&quot;centos-6-x86_64-extras&quot;</span><span class="nt">/&gt;</span>
  <span class="nt">&lt;/Group&gt;</span>
<span class="nt">&lt;/Sources&gt;</span>
</pre></div>
</div>
<p>Pulp sources require some additional configuration. First, the Bcfg2
server must have a valid <tt class="docutils literal"><span class="pre">/etc/pulp/consumer/consumer.conf</span></tt> that is
readable by the user your Bcfg2 server runs as; the Pulp server,
URLs, and so on, are determined from this.</p>
<p>Secondly, in <tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt> you must set the following
options in the <tt class="docutils literal"><span class="pre">[packages:pulp]</span></tt> section:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">username</span></tt> and <tt class="docutils literal"><span class="pre">password</span></tt>: The username and password of a Pulp
user that will be used to register new clients and bind them to
repositories. Membership in the default <tt class="docutils literal"><span class="pre">consumer-users</span></tt> role is
sufficient.</li>
</ul>
<p>Bcfg2 clients using Pulp sources will be registered to the Pulp server
as consumers, and will be bound to the appropriate repositories.</p>
</div>
<div class="section" id="debugging-unexpected-behavior">
<h2>Debugging unexpected behavior<a class="headerlink" href="#debugging-unexpected-behavior" title="Permalink to this headline">¶</a></h2>
<p class="versionadded">
<span class="versionmodified">New in version 1.2.1.</span></p>
<div class="section" id="using-bcfg2-info">
<h3>Using bcfg2-info<a class="headerlink" href="#using-bcfg2-info" title="Permalink to this headline">¶</a></h3>
<p>The dependency resolver used in Packages can be run in debug mode:</p>
<div class="highlight-python"><pre>$ bcfg2-info packageresolve foo.example.com bcfg2-server zlib
...
2 initial packages
    bcfg2-server
    zlib
54 new packages added
    sqlite
    less
    libxml2
    expat
    ...
1 unknown packages
    libglib-2.0.so.0()(64bit)</pre>
</div>
<p>This will show why the resolver is acting as it is. Replace
<tt class="docutils literal"><span class="pre">foo.example.com</span></tt> and <tt class="docutils literal"><span class="pre">bcfg2-server</span></tt> with a client name and list
of packages, respectively.</p>
<p>Note that resolving a partial package list (as above) may result in
more unknown entries than you&#8217;d have otherwise; some of the package
drivers (Yum in particular) consider the full package list when
resolving multiple providers, and will not be able to properly resolve
some dependencies without a full package list.</p>
<p>You can also view the sources applicable to a client:</p>
<div class="highlight-python"><pre>$ bcfg2-info packagesources foo.example.com
...
Name: centos-6-x86_64-updates
  Type: yum
  URL: http://mirror.example.com/centos-6-x86_64-updates
  GPG Key(s): http://mirror.example.com/centos-6-x86_64-updates/RPM-GPG-KEY-CentOS-6

Name: centos-6-x86_64-os
  Type: yum
  URL: http://mirror.example.com/centos-6-x86_64-os
  GPG Key(s): http://mirror.example.com/centos-6-x86_64-os/RPM-GPG-KEY-CentOS-6</pre>
</div>
</div>
<div class="section" id="using-bcfg2-server">
<h3>Using bcfg2-server<a class="headerlink" href="#using-bcfg2-server" title="Permalink to this headline">¶</a></h3>
<p>Once the server is started, enable debugging via bcfg2-admin:</p>
<div class="highlight-python"><pre>$ bcfg2-admin xcmd Packages.toggle_debug</pre>
</div>
</div>
</div>
<div class="section" id="todo-list">
<h2>TODO list<a class="headerlink" href="#todo-list" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Zypper support</li>
<li>Portage support</li>
</ul>
</div>
<div class="section" id="configuration">
<span id="id3"></span><h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
<p><tt class="docutils literal"><span class="pre">bcfg2.conf</span></tt> contains miscellaneous configuration options for the
Packages plugin. Any booleans in the config file accept the values
&#8220;1&#8221;, &#8220;yes&#8221;, &#8220;true&#8221;, and &#8220;on&#8221; for True, and &#8220;0&#8221;, &#8220;no&#8221;, &#8220;false&#8221;, and
&#8220;off&#8221; for False.  For historical reasons, <tt class="docutils literal"><span class="pre">resolver</span></tt> and
<tt class="docutils literal"><span class="pre">metadata</span></tt> also accept &#8220;enabled&#8221; and &#8220;disabled&#8221;.</p>
<p>It understands the following directives:</p>
<div class="section" id="packages-section">
<h3>[packages] section<a class="headerlink" href="#packages-section" title="Permalink to this headline">¶</a></h3>
<table border="1" class="docutils">
<colgroup>
<col width="12%" />
<col width="51%" />
<col width="9%" />
<col width="27%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Name</th>
<th class="head">Description</th>
<th class="head">Values</th>
<th class="head">Default</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>resolver</td>
<td>Enable dependency resolution</td>
<td>Boolean</td>
<td>True</td>
</tr>
<tr class="row-odd"><td>metadata</td>
<td>Enable metadata processing. Disabling <tt class="docutils literal"><span class="pre">metadata</span></tt>
implies disabling <tt class="docutils literal"><span class="pre">resolver</span></tt> as well.</td>
<td>Boolean</td>
<td>True</td>
</tr>
<tr class="row-even"><td>yum_config</td>
<td>The path at which to generate Yum configs.</td>
<td>String</td>
<td>/etc/yum.repos.d/bcfg2.repo</td>
</tr>
<tr class="row-odd"><td>apt_config</td>
<td>The path at which to generate APT configs.</td>
<td>String</td>
<td>/etc/apt/sources.d/bcfg2</td>
</tr>
<tr class="row-even"><td>gpg_keypath</td>
<td>The path on the client RPM GPG keys will be copied
to before they are imported on the client.</td>
<td>String</td>
<td>/etc/pki/rpm-gpg</td>
</tr>
<tr class="row-odd"><td>version</td>
<td>Set the version attribute used when binding Packages</td>
<td>any|auto</td>
<td>auto</td>
</tr>
<tr class="row-even"><td>cache</td>
<td>Path where Packages will store its cache</td>
<td>String</td>
<td>&lt;repo&gt;/Packages/cache</td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="packages-yum-section">
<h3>[packages:yum] section<a class="headerlink" href="#packages-yum-section" title="Permalink to this headline">¶</a></h3>
<table border="1" class="docutils">
<colgroup>
<col width="20%" />
<col width="60%" />
<col width="9%" />
<col width="11%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Name</th>
<th class="head">Description</th>
<th class="head">Values</th>
<th class="head">Default</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>use_yum_libraries</td>
<td>Whether or not to use the
<a class="reference internal" href="#native-yum-libraries"><em>native yum library support</em></a></td>
<td>Boolean</td>
<td>False</td>
</tr>
<tr class="row-odd"><td>helper</td>
<td>Path to <tt class="docutils literal"><span class="pre">bcfg2-yum-helper</span></tt></td>
<td>String</td>
<td>See below</td>
</tr>
</tbody>
</table>
<p>To find <tt class="docutils literal"><span class="pre">bcfg2-yum-helper</span></tt> if none is specified, Bcfg2 looks first
in <tt class="docutils literal"><span class="pre">$PATH</span></tt> and then in <tt class="docutils literal"><span class="pre">/usr/sbin/bcfg2-yum-helper</span></tt> for the
helper.</p>
<p>All other options in the <tt class="docutils literal"><span class="pre">[packages:yum]</span></tt> section will be passed
along verbatim to the Yum configuration if you are using the native
Yum library support.</p>
</div>
<div class="section" id="packages-pulp-section">
<h3>[packages:pulp] section<a class="headerlink" href="#packages-pulp-section" title="Permalink to this headline">¶</a></h3>
<table border="1" class="docutils">
<colgroup>
<col width="13%" />
<col width="66%" />
<col width="10%" />
<col width="11%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Name</th>
<th class="head">Description</th>
<th class="head">Values</th>
<th class="head">Default</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>username</td>
<td>The username of a Pulp user that will be used to
register new clients and bind them to repositories.</td>
<td>String</td>
<td>None</td>
</tr>
<tr class="row-odd"><td>password</td>
<td>The password of the Pulp user</td>
<td>String</td>
<td>None</td>
</tr>
</tbody>
</table>
<p>The user should be a member of the default <tt class="docutils literal"><span class="pre">consumer-users</span></tt> role.</p>
</div>
</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="#">Packages</a><ul>
<li><a class="reference internal" href="#limiting-sources-to-groups">Limiting sources to groups</a></li>
<li><a class="reference internal" href="#magic-groups">&#8220;Magic Groups&#8221;</a></li>
<li><a class="reference internal" href="#setup">Setup</a><ul>
<li><a class="reference internal" href="#sources-xml">sources.xml</a></li>
<li><a class="reference internal" href="#handling-gpg-keys">Handling GPG Keys</a></li>
<li><a class="reference internal" href="#arbitrary-repo-options">Arbitrary Repo Options</a></li>
</ul>
</li>
<li><a class="reference internal" href="#prerequisite-resolution">Prerequisite Resolution</a><ul>
<li><a class="reference internal" href="#disabling-dependency-resolution">Disabling dependency resolution</a></li>
<li><a class="reference internal" href="#blacklisting-faulty-dependencies">Blacklisting faulty dependencies</a></li>
</ul>
</li>
<li><a class="reference internal" href="#example-usage">Example usage</a></li>
<li><a class="reference internal" href="#configuration-updates">Configuration Updates</a><ul>
<li><a class="reference internal" href="#soft-reload">Soft reload</a></li>
</ul>
</li>
<li><a class="reference internal" href="#availability">Availability</a></li>
<li><a class="reference internal" href="#package-checking-and-verification">Package Checking and Verification</a></li>
<li><a class="reference internal" href="#generating-client-apt-yum-configurations">Generating Client APT/Yum Configurations</a></li>
<li><a class="reference internal" href="#using-native-yum-libraries">Using Native Yum Libraries</a><ul>
<li><a class="reference internal" href="#configuring-the-yum-helper">Configuring the Yum Helper</a></li>
<li><a class="reference internal" href="#setting-yum-options">Setting Yum Options</a></li>
<li><a class="reference internal" href="#package-groups">Package Groups</a></li>
<li><a class="reference internal" href="#abstract-package-tags">Abstract Package Tags</a></li>
</ul>
</li>
<li><a class="reference internal" href="#pulp-support">Pulp Support</a></li>
<li><a class="reference internal" href="#debugging-unexpected-behavior">Debugging unexpected behavior</a><ul>
<li><a class="reference internal" href="#using-bcfg2-info">Using bcfg2-info</a></li>
<li><a class="reference internal" href="#using-bcfg2-server">Using bcfg2-server</a></li>
</ul>
</li>
<li><a class="reference internal" href="#todo-list">TODO list</a></li>
<li><a class="reference internal" href="#configuration">Configuration</a><ul>
<li><a class="reference internal" href="#packages-section">[packages] section</a></li>
<li><a class="reference internal" href="#packages-yum-section">[packages:yum] section</a></li>
<li><a class="reference internal" href="#packages-pulp-section">[packages:pulp] section</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="nagiosgen.html"
                        title="previous chapter">NagiosGen</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="pkgmgr.html"
                        title="next chapter">Pkgmgr</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../../../_sources/server/plugins/generators/packages.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="pkgmgr.html" title="Pkgmgr"
             >next</a> |</li>
        <li class="right" >
          <a href="nagiosgen.html" title="NagiosGen"
             >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" >The Bcfg2 Server</a> &raquo;</li>
          <li><a href="../index.html" >Plugins</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>