summaryrefslogtreecommitdiffstats
path: root/doc/repo-quickstart.txt
blob: d52fc08a2c5ab3cc642056ed9c542632ac0318a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
The Bcfg2 repository has a bunch of parts, each with different
functions.

Cfg/ -> Configuration file repository
Pkgmgr/ -> Package indices for different images
SSHbase/ -> SSH Key data files
etc/ -> Single files for generators or system wide settings

Adding to the repository:

1. If the addition is a single package or configuration file (without
   any associated service) it can be added to etc/base.xml. This file
   contains single items which need to be installed on
   clients. Entries can be nested, depending on where they should be
   installed. Global entries go at the top level, as do containers
   corresponding to particular Images. Items which should be on all
   instances of an image should directly inside of the Image tag, and
   containers for classes can also be added at this level. 

<Base>
 <ConfigFile name="/etc/passwd" />
 <ConfigFile name="/etc/group" />
 <Image name="debian-sarge">
   <ConfigFile name="/etc/motd" />
   <Class name='workstation'>
     <Package name='gdm'/>
   </Class>
  </Image>
</Base>

    In the above example, /etc/passwd and group belong on all
    machines, while /etc/motd belongs on all debian-sarge
    machines. the package gdm belongs only on debian-sarge machines in
    class workstation. 

2. If a package is associated with a service, then it should be
   installed as a part of a bundle. This means that the installation
   mechanism will ensure that all components are installed properly
   and that services are restarted when any underlying components
   change. The bundle making process consist of the following steps:

   - Create the bundle file. (look at <REPO>/Bundler/ssh.xml for an
     example) This file contains a list of all interrelated
     configuration items. Abstraction based on system (a grouping of
     images) is possible in this file. Note that explicit
     configuration data, like file contents or package versions aren't
     specified in this file.

   - Add all new configuration items into the generator
     sources. The package list automatically contains all packages
     available, so it shouldn't need to be changed. Config files must
     be added to the repository in <REPO>/Cfg. Services must be
     activated in <REPO>/etc/services.xml. 

   - Activate the bundle for a class in <REPO>/etc/metadata.xml

In all cases, run /usr/sbin/ValidateBcfg2Repo <repo> after changes are
made. This wil check that the files still parse (ie typos, or quote
errors)  and check their values against xml schemas, which will ensure
that all element names are correct and that required attributes are
included.