summaryrefslogtreecommitdiffstats
path: root/doc/unsorted/annotated_examples.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/unsorted/annotated_examples.txt')
-rw-r--r--doc/unsorted/annotated_examples.txt186
1 files changed, 186 insertions, 0 deletions
diff --git a/doc/unsorted/annotated_examples.txt b/doc/unsorted/annotated_examples.txt
new file mode 100644
index 000000000..99c6f774c
--- /dev/null
+++ b/doc/unsorted/annotated_examples.txt
@@ -0,0 +1,186 @@
+.. -*- mode: rst -*-
+
+.. _unsorted-annotated_examples:
+
+==================
+Annotated Examples
+==================
+
+ntp example
+===========
+
+Author: Jason Pepas
+
+Here is a series of example configurations for bcfg2, each introducing another layer of functionality.
+
+* After each change, run 'bcfg-repo-validate -v'.
+* Run the server with 'bcfg2-server -v'.
+* Update the client with 'bcfg2 -v -d -n'. (will not actually make client changes)
+
+package only
+------------
+
+Our example starts with the bare minimum configuration setup. We have a client, a profile group, a list of packages, and a base configuration.
+
+::
+
+ # cat Metadata/clients.xml
+ <Clients version='3.0'>
+ <Client profile='fedora' pingable='N' pingtime='0' name='foo.bar.com'/>
+ </Clients>
+
+ # cat Metadata/groups.xml
+ <Groups version='3.0'>
+ <Group profile='true' name='fedora' toolset='rh'/>
+ </Groups>
+
+ # cat Base/base.xml
+ <Base>
+ <Group name='fedora'>
+ <Package name='ntp'/>
+ </Group>
+ </Base>
+
+ # cat Pkgmgr/packages.xml
+ <PackageList type='rpm' priority='0'>
+ <Package name='ntp' version='4.2.0.a.20050816-11.FC5'/>
+ </PackageList>
+
+add service
+-----------
+
+Configure the service, and add it to the base.::
+
+ # cat Svcmgr/services.xml
+ <Services priority='0'>
+ <Service name='ntpd' status='on'/>
+ </Services>
+
+ # cat Base/base.xml
+ <Base>
+ <Group name='fedora'>
+ <Package name='ntp'/>
+ <Service name='ntpd'/>
+ </Group>
+ </Base>
+
+add config file
+---------------
+
+Setup an etc directory structure, and add it to the base.::
+
+ # cat Cfg/etc/ntp.conf/ntp.conf
+ server ntp1.utexas.edu
+
+ # cat Base/base.xml
+ <Base>
+ <Group name='fedora'>
+ <Package name='ntp'/>
+ <Service name='ntpd'/>
+ <ConfigFile name='/etc/ntp.conf'/>
+ </Group>
+ </Base>
+
+create a bundle
+---------------
+
+The above configuration layout works fine for a single service, but
+that method of organization would quickly become a nightmare as you
+approach the number of packages, services, and config files required
+to represent a fully configured host. Bundles allow the grouping of
+related configuration entries that are used to provide a single
+service. This is done for several reasons:
+
+* Grouping related things in one place makes it easier to add those
+ entries for a multiple groups of clients
+* Grouping entries into bundles makes their validation occur
+ collectively. This means that config files can override the
+ contents of packages. Also, config files are rechecked after
+ packages are upgraded, so that they can be repaired if the package
+ install clobbered them.
+* Services associated with a bundle get restarted whenever any
+ entity in that bundle is modified. This ensures that new
+ configuration files and software are used after installation.
+
+The config file, package, and
+service are really all related components describing the idea of an
+ntp client, so they should be logically grouped together. We use a
+bundle to accomplish this.::
+
+ # cat Bundler/ntp.xml
+ <Bundle name='ntp' version='2.0'>
+ <Package name='ntp'/>
+ <Service name='ntpd'/>
+ <ConfigFile name='/etc/ntp.conf'/>
+ </Bundle>
+
+After this bundle is created, it must be associated with a group (or
+groups). Add a bundle child element to the group(s) which should install this bundle.::
+
+
+ # cat Metadata/groups.xml
+ <Groups>
+ ...
+ <Group name='fedora'>
+ <Bundle name='ntp'/>
+ </Group>
+ ...
+ </Groups>
+
+Once this bundle is created, a client reconfigure will install these
+entries. If any are modified, then the ntpd service will be
+restarted. If you only want ntp configurations to be updated (and
+nothing else), the bcfg2 client can be run with a -b <bundle name>
+option that will only update entries in the specified bundle.
+
+mysql example
+=============
+
+Author: Patrick Ruckstuhl
+
+I had some time ago to continue with putting my configuration into
+bcfg2 and maybe this helps someone else.
+
+I added a new bundle:
+
+.. code-block: xml
+
+ <Bundle name="mysql-server" version="3.0">
+ <ConfigFile name="/root/bcfg2-install/mysql/users.sh"/>
+ <ConfigFile name="/root/bcfg2-install/mysql/users.sql"/>
+ <PostInstall name="/root/bcfg2-install/mysql/users.sh"/>
+ <Package name="mysql-server-4.1"/>
+ <Service name="mysql"/>
+ </Bundle>
+
+The `users.sh` script looks like this:
+
+.. code-block: sh
+
+ #!/bin/sh
+
+ mysql --defaults-extra-file=/etc/mysql/debian.cnf mysql \
+ < /root/bcfg2-install/mysql/users.sql
+
+On debian there is a user account in `/etc/mysql/debian.cnf` automatically created, but you could also (manually) create a user in the database that has enough permissions and add the login information in a file yourself. This file looks like this::
+
+ [client]
+ host = localhost
+ user = debian-sys-maint
+ password = XXXXXXXXXX
+
+The `users.sql` looks like this::
+
+ DELETE FROM db;
+ INSERT INTO db VALUES ('localhost', 'phpmyadmin', 'pma', 'Y', 'Y',
+ 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');
+
+ DELETE FROM user WHERE User <> 'debian-sys-maint';
+ INSERT INTO user VALUES ('localhost', 'root', 'XXXXXXXXXXX', 'Y', 'Y',
+ 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
+ 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0);
+ INSERT INTO user VALUES ('localhost', 'pma', '', 'N', 'N', 'N', 'N',
+ 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N',
+ 'N', 'N', 'N', '', '', '', '', 0, 0, 0);
+
+ FLUSH PRIVILEGES;