summaryrefslogtreecommitdiffstats
path: root/doc/appendix/files/ntp.txt
blob: 38d5e2208f66828d913fe865c8bbd88075c52530 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
.. -*- mode: rst -*-

.. _appendix-files-ntp:

.. Author: Jason Pepas

ntp example
===========

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 an NTP bundle.

``Metadata/clients.xml``:

.. code-block:: xml

    <Clients>
      <Client profile='server' name='foo.bar.com'/>
    </Clients>

``Metadata/groups.xml``:

.. code-block:: xml

    <Groups>
      <Group profile='true' name='server'>
        <Bundle name="ntp"/>
      </Group>
    </Groups>

``Bundler/ntp.xml``:

.. code-block:: xml

    <Bundle name="ntp">
      <Package name='ntp'/>
    </Bundle>

``Pkgmgr/packages.xml``:

.. code-block:: xml

    <PackageList type='rpm' priority='0'>
      <Package name='ntp' version='4.2.0.a.20050816-11.FC5'/>
    </PackageList>

(This can also be performed more elegantly with the
:ref:`server-plugins-generators-pacakges` plugin.)

Add service
-----------

Configure the service, and add it to Rules.

``Rules/services.xml``:

.. code-block:: xml

    <Services priority='0'>
      <Service name='ntpd' status='on'/>
    </Services>

``Bundler/ntp.xml``:

.. code-block:: xml

    <Bundle name="ntp">
      <Package name='ntp'/>
      <Service name='ntpd'/>
    </Bundle>

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

``Base/base.xml``:

``Bundler/ntp.xml``:

.. code-block:: xml

    <Bundle name="ntp">
      <Package name='ntp'/>
      <Service name='ntpd'/>
       <Path name='/etc/ntp.conf'/>
    </Bundle>

Create a bundle
---------------

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 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.

``Bundler/ntp.xml``:

.. code-block:: xml

    <Bundle name='ntp'>
      <Package name='ntp'/>
      <Service name='ntpd'/>
      <Path 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.

``Metadata/groups.xml``:

.. code-block:: xml

     <Groups>
      ...
      <Group profile='true' name='server'>
        <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.