FileProbes

The FileProbes plugin allows you to probe a client for a file, which is then added to the Cfg specification. If the file changes on the client, FileProbes can either update it in the specification or allow Cfg to replace it.

FileProbes will not probe a file if there’s already a file in Cfg that will apply to the client. So if, for instance, you have a generic file in Cfg/etc/foo.conf/foo.conf that applies to all hosts, FileProbes will not retrieve /etc/foo.conf from the client (unless update is enabled; see Configuration below).

When a new config file is first probed, an info.xml file is also written to enforce the permissions from that client. Subsequent probes from other clients will not modify or overwrite the data in info.xml. (This ensures that any manual changes you make to info.xml for that file are not circumvented.)

Configuration

FileProbes is configured in FileProbes/config.xml, which might look something like:

<FileProbes>
  <FileProbe name="/etc/foo.conf"/>
  <Group name="blah-servers">
    <FileProbe name="/etc/blah.conf" update="true"/>
  </Group>
  <Client name="bar.example.com">
    <FileProbe name="/var/lib/bar.gz" encoding="base64"/>
  </Client>
</FileProbes>

This will result in /etc/foo.conf being retrieved from all clients; if it changes on a client, it will be overwritten by the version that was retrieved initially.

Clients in the blah-servers group will be probed for /etc/blah.conf; if it changes on a client, those changes will be written into the Bcfg2 specification. If the file is deleted from a client, it will be rewritten from Bcfg2.

bar.example.com will be probed for /var/lib/bar.gz, which contains non-ASCII characters and so needs to use base64 encoding when transferring the file.

The paths probed by FileProbes must also be included as Path entries in your bundles in order to be handled properly by Cfg. Permissions are handled as usual, with info.xml files in Cfg.