rolling binary updates from server to clients

I haven't had any luck searching for this, perhaps someone here
can point me in the right direction.

Is there an app to enable a FreeBSD server to perform binary
updates on a host of FreeBSD clients.

Example 1: A binary update to an application (FireFox) is needed on all
clients.The server needs to PUSH this out to 10 machines.

Example 2: A binary update is needed, but not available, so the server
needs to compile the source and push the resulting binary
updates out to the 10 clients.

In case 2, I believe the server can generate a package from source
and make it available to the clients as a partial solution. It would
be best however if the server could push the updates out without
having to run a pkg_add or portupgrade on every machine through a login.
 
Barnon said:
I haven't had any luck searching for this, perhaps someone here can point me in the right direction.

Is there an app to enable a FreeBSD server to perform binary updates on a host of FreeBSD clients.

One of the ways to do that is what you guessed and described below. By building pre-compiled packages and having the clients pull them from a package server.

Barnon said:
Example 1: A binary update to an application (FireFox) is needed on all clients. The server needs to PUSH this out to 10 machines

If all the clients have the same set of packages, and they have 99% identical configuration options in their /usr/local filesystems, it may be more efficient to update the packages in only one client and then push the changes from the server to the clients or pull from each client. Using net/rsync or a similar tool may be much faster than running portupgrade a few dozen or more than a hundred times.

If there are more than one "type" of clients, but they fall in just a handful of categories, you should investigate tools like jails and sysutils/cfengine.

For example, if you have two different client types, and they need a different set of packages installed in their /usr/local filesystems, but they run the same FreeBSD release, you can:

  • Prepare two jails in the server: one for each client type. These will be used as pre-mastering / staging areas for client updates.
  • Install sysutils/cfengine on the server, and use it to track the configuration files of each client "master image".
  • Update the packages in each jail.
  • Check the new package versions and make sure that they work.
  • Push the updates from each jail to the clients that use this type of "client image". This part can use rsync, rdiff-backup or some other form of filesystem synchronization.
 
Back
Top