Version 15 (modified by solj, 14 years ago) (diff)

Add recent trunk changes

Tracking Development Releases of Bcfg2

Currently, we are in the process of working on 1.0. The roadmap is located at source:trunk/bcfg2/doc/1.0-roadmap

User visible changes

In version 1.0, version 2.4 or greater of python will be required.

New plugins

Service Changes

  • New overall client service mode
    • default
      • perform all service manipulations
    • disabled
      • perform no service manipulations
    • build
      • attempt to stop all services started
      • deprecates/replaces -B
  • New per service mode
    • mode='manual'
      • do not start/stop/restart this service
    • mode='default'
      • perform appropriate service ops
    • mode='supervised'
      • default + ensure service is running when verification is performed
      • deprecates supervised='true'
    • mode='custom'
      • set non-default restart target in conjunction with target attr

Release Information

since 1.0pre1

  • New Snapshots (to replace reports)
  • Fix insecure mktemp usage (see Ticket #630)
  • New version of BB plugin implemented as a connector
  • RPMng changes
    • support for version='any'
    • fix gpg nosignature option (see Ticket #641)
  • Python 2.6 fixes
  • Probes interpreter fix from Kamil Kiseil
  • Pass bind failure information to clients
  • Solaris packaging updates
  • Fix newlines at the end of .cat files (Reported by Michael Jinks)


  • Modular version control support for repositories (plus new Git support)
  • Plugin architecture revamp (described in trunk/bcfg2/doc/plugin-roles)
    • Switch probes and properties to connector interface
  • Add new Packages plugin
  • Add support for out of tree plugins
  • Add Genshi Bundler (will be replaced by genshi support in Bundler)
  • version=any/auto support for APT/SYSV/Blast client tool drivers
  • new logo
  • Python 3k fixes

Tracking Development Releases of Bcfg2 (< 1.0)

This page provides an overview of issues users should be aware of when running Bcfg2 prereleases.

Fixed Issues

Version Description Severity Fix Revision
Cfg state machine error Serious [3784]
importscript performance problems Serious [3795]
apt-get update is run before updates to sources.list Workaround [3785]
create-debian-pkglist mishandles arch-specific packages
when packages are only available on one arch
Workaround [3779]
YUMng traceback with incomplete Package entries
during entry reverification
Cosmetic [3656]
SSHbase traceback upon new entry addition Serious [3617]
Diffs not displayed in interactive client mode Serious [3618]
Failure on error path in POSIX driver Cosmetic [3622]

Release Information


  • Bugfixes over 0.9.6pre3
  • Model support for django 1.0


  • NagiosGen? plugin
  • Centralized per-entry installation decision support
  • Static file monitoring infrastructure
  • Reporting system SchemaEvolution support
  • Tons of bugfixes


  • bcfg2-reports (command line client to the reporting system)
  • Editor plugin
  • Plugin interface for metadata and statistics backends
  • bcfg2-admin query (command line interface to metadata)
  • FreeBSD rc support
  • Pkgmgr optimizations (10X speedup on python2.4+)
  • Switch server startup operations to process filesystem updates before listening on network
  • Add direct logging support for bcfg2 and bcfg2-server


  • Refactor Cfg/TCheetah/TGenshi/SGenshi/Metadata to use common client- and group-specific entries
    • client- and group-specific entries can now be used as
      • Probes
      • TGenshi templates
      • SGenshi templates
      • TCheetah templates
  • bcfg2-admin refactor
    • Mainly conversions
    • Implement non-interactive mode for bcfg2-admin pull
  • Simplify client-side proxy code
  • Implement Multi-fingerprint support
  • Rework option handling (everything is now flat, and all option parsing occurs in the outermost calling script)
  • A variety of trunk-specific bugfixes


  • importscript performance improvements
  • Implement pruned directories
  • - move apt-get update call to be effective during the run
  • bugfix - deal properly with fam event trace we previously messed up (important for some cases)
  • create-debian-pkglist - deal properly with multiarch packages when packages aren't available for all architectures
  • patch from solj (to deal with athlon arch systems)
  • YUMng/RPMng bugfixes
  • Pkgmgr - deal with comments properly in multiarch situations


  • infoxml support has been included in TCheetah and TGenshi (now group-based file permissions and ownership can be trivially specified for any ConfigFile plugin)
  • TCheetah error information is now presented upon templating failures.
  • Probedata is now written to disk, for use with bcfg2-info (This, in conjunction with improved TCheetah templating error display should remove probe-based TCheetah templates from the "black art" category)
  • altsrc consistency checking is implemented (ie an error is produced if a configuration containing the same entry with different altsrc tags is generated for a client)
  • RPMng: Improved debug output when required attributes are not present
  • Schema updates
  • Fix diff display for non-binary ConfigFiles in interactive mode
  • Fix sshbase bug
  • Fix POSIX driver error paths


  • support for info.xml files (described here?)
  • support for package instance mappings. (described here?)
  • added output options to bcfg2-query suitable for use with pdsh
  • fixed binary file uploads and bcfg2-admin pull
  • removed spurious -q in
  • Improve client error message when entries are incomplete (print missing fields)
  • child process management fix in server
  • dynamic reporting system tb fix


  • changed django reports admin to dev e-mail address
  • Add secondary config file for webservers (so that webservers don't need access to bcfg2.conf)
  • updated init script for agent mode
  • Add support for altsrc bindings to TGenshi
  • Implementing selective forking server, which runs read-only requests in child processes. Should dramatically improve scalability
  • merge realname into path for altsrc templates in TCheetah
  • Switch default to RPMng/YUMng (RPM/Yum are still around just not enabled by default)
  • quiet down RPMng a little (patch from lueningh)
  • Implement bcfg2-remote -H -
  • Add a realname attribute in altsrc bound entries and add TCheetah support
  • Add default attribute to basic group in default config
  • Fix use of altsrc when using Package entries with file attributes
  • Improve error handling in bcfg2-admin (Step towards resolving Ticket #469)
  • Switch DebInit to use invoke-rc.d (Resolves Ticket #434)
  • Fix bcfg2-info build command
  • add altsrc to schema


  • Reporting System Features:
    • Hosts may be "expired" to prevent them from showing up in reports. Data still exists for them, so if one views a calendar date before they were expired, they'll still show up.
    • requires action The config file for reports has changed locations from the inappropriate location inside the bcfg2 python module, to be part of bcfg2.conf. Please look at the included example bcfg2.conf to see the new format
    • requires action Reporting System may be installed at any URL, that is, it can be installed in a sub directory and not at the root of a virtual host. Django 0.96 is now required.
  • Bcfg2 Agent Mode:
    • Initial release of this functionality
    • Client may run in an idle mode waiting for reconfiguration command from the server
    • Use bcfg2-remote to initiate a client's reconfiguration operation
    • Uses fingerprint based authentication for https xml-rpc connection
    • Useful for instant reconfiguration of client without ssh'ing to host
    • still need to add daemonize code and init script support (next pre)
  • Binary diff uploads now work properly
  • Added the TGenshi plugin (contributed by Jeff Ollie)
  • Added the SGenshi plugin
    • is intended for use as a structure, like bundler or base.
    • only uses the genshi xml format
    • results in completely programmable bundles
    • this could eventually replace both bundler and base, as it is
    • more powerful
  • Added entry remapping support
    • with the addition of an extra altsrc attribute, entries can be remapped to a different source.
    • For example, if you have the same config file with different paths on different architectures, you can add altsrc to use the same plugin and repository on all architectures. ie: <ConfigFile name='/etc/inet/hosts' altsrc='/etc/hosts'/> will cause all linux and solaris systems to use the same plugin source for data on all clients.
    • This feature was motivated by the need manage a bunch of config files using the same template