summaryrefslogtreecommitdiffstats
path: root/doc/server/plugins/generators/tgenshi/index.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/server/plugins/generators/tgenshi/index.txt')
-rw-r--r--doc/server/plugins/generators/tgenshi/index.txt121
1 files changed, 121 insertions, 0 deletions
diff --git a/doc/server/plugins/generators/tgenshi/index.txt b/doc/server/plugins/generators/tgenshi/index.txt
new file mode 100644
index 000000000..f482fa143
--- /dev/null
+++ b/doc/server/plugins/generators/tgenshi/index.txt
@@ -0,0 +1,121 @@
+.. -*- mode: rst -*-
+
+.. _server-plugins-generators-tgenshi-index:
+
+=======
+TGenshi
+=======
+
+This page documents the TGenshi plugin. This plugin works with version
+0.4 and newer of the genshi library.
+
+The TGenshi plugin allows you to use the `Genshi
+<http://genshi.edgewall.org>`_ templating system to create files,
+instead of the various diff-based methods offered by the Cfg
+plugin. It also allows you to include the results of probes executed
+on the client in the created files.
+
+To begin, you will need to download and install the Genshi templating engine.
+
+To install on CentOS or RHEL 5, run::
+
+ sudo yum install python-genshi
+
+Once it is installed, you can enable it by adding ``TGenshi`` to the
+generators line in ``/etc/bcfg2.conf`` on your Bcfg server. For example::
+
+ generators = SSHbase,Cfg,Pkgmgr,Svcmgr,Rules,TGenshi
+
+The TGenshi plugin makes use of a Cfg-like directory structure
+located in in a TGenshi subdirectory of your repository, usually
+``/var/lib/bcfg2/TGenshi``. Each file has a directory containing two file
+types, template and info. Templates are named according to the genshi
+format used; template.txt uses the genshi text format, and template.xml
+uses the XML format.
+
+If used with Genshi 0.5 or later the plugin also supports the `new
+style
+<http://genshi.edgewall.org/wiki/Documentation/0.5.x/text-templates.html>`_
+text template format for files named template.newtxt. One of the
+advantages of the new format is that it does not use # as a command
+delimiter, making it easier to utilize for configuration files that
+use # as a comment character.
+
+Only one template format may be used per file served. Info files are
+identical to those used in ``Cfg``, and ``info.xml`` files are
+supported.
+
+Inside of templates
+===================
+
+* metadata is the client's metadata
+* properties.properties is an xml document of unstructured data
+
+See the genshi `documentation
+<http://genshi.edgewall.org/wiki/Documentation>`_ for examples of
+Genshi syntax.
+
+Examples: Old Genshi Syntax
+---------------------------
+
+Genshi's web pages recommend against using this syntax, as it may disappear from future releases.
+
+Group Negation
+--------------
+
+Templates are also useful for cases where more sophisticated boolean
+operations than those supported by Cfg are needed. For example, the
+template::
+
+ #if "ypbound" in metadata.groups and "workstation" in metadata.groups
+ client is ypbound workstation
+ #end
+ #if "ubuntu" not in metadata.groups and "desktop" in metadata.groups
+ client is a desktop, but not an ubuntu desktop
+ #end
+
+Produces:
+
+.. code-block:: xml
+
+ <Path type="file" name="/bar.conf" owner="root" perms="0644" group="root">client is ypbound workstation
+ client is a desktop, but not an ubuntu desktop
+ </Path>
+
+This flexibility provides the ability to build much more compact and
+succinct definitions of configuration contents than Cfg can.
+
+FAQs
+====
+
+**Question**
+
+How do I escape the $ (dollar sign) in a TGenshi text template? For
+example, if I want to include SVN (subversion) keywords like $Id$ or
+$HeadURL$ in TGenshi-generated files, or am templating a bourne shell
+(sh/bash) script or Makefile (make).
+
+**Answer**
+
+Use $$ (double dollar sign) to output a literal $ (dollarsign)
+in a TGenshi text template. So instead of $Id$, you'd use
+$$Id$$. See also Genshi tickets `#282: Document $$ escape
+convention <http://genshi.edgewall.org/ticket/282>`_ and
+`#283: Allow for redefinition of template syntax per-file
+<http://genshi.edgewall.org/ticket/283>`_.
+
+Examples
+========
+
+.. toctree::
+ :maxdepth: 1
+
+ bcfg2-cron
+ clientsxml
+ ganglia
+ grubconf
+ hosts
+ iptables
+ motd
+ mycnf
+ test