Q. What is MSUP?
A. MSUP provides a simple and easy way to keep all machines in a network up to date. MSUP allows an administrator to update multiple machines with machine specific settings, i.e. the machine's IP address, NFS exports, network gateway, etc, from only a single set of files (usually configuration files). The idea here is that an administrator usually configures a group of machines in a similar fashion with only slight variations. If one went and changed the gateway IP for 50 workstations, one wouldn't want to go and update 50 configuration files. MSUP solves this problem.
Q. But couldn't I just use NFS to store my common files?
A. Yes, NFS works well and is a good alternative to using an installer like MSUP. However, the fundamental problem with NFS is that if the NFS mount goes down, or the machine that is exporting the file system has problems, then all machines relying on that NFS export will be unusable. MSUP installs a customized snapshot of each file on each machine so the machines are able to operate independently of any network problems.
Q. How does MSUP work?
A. MSUP keeps a file set for each "target", a target is usually an operating system, but could really be anything. Each target contains a set of "hosts" and a host is what receives the customized snapshot of the file set. For example, here is an example msup.conf:
targets = "freebsd-6, gentoo" # Target systems (usually OS types)
# Target configuration
freebsd-6 = "zvezda" # All of our FreeBSD 6 machines
gentoo = "unity" # All of our Gentoo Linux machines
So here we have freebsd-6 and gentoo targets, each with a single host. Depending on how you setup MSUP (see msup.conf for more information), MSUP will either create a tar archive of the file set, or install them, using scp, to the machines themselves. All of the files are customized using a simple macro language. For example, within any file in the file set, use the %%macro%% macro. Then, within the MSUP configuration files, you can define a setting for that macro:
etc.. This technique allows you to customize settings for your machines because the macro definitions are loaded in a specific order depending on target and host. If a macro definition is found in more than one file, the last one found is used (thus overriding the previous definitions):
1. msup/all.conf (settings for ALL targets and hosts)
2. msup/freebsd-6/target.conf (settings for the freebsd-6 target only)
3. msup/freebsd-6/zvezda.conf (settings for the zvezda host only)
See the examples that come with the distribution for more information.