Specification and Goal
1. To provide for software updates to a large number of local and remote systems in a safe manner.
2. To provide the ability to rollback a software distribution.
3. To allow safe distributions and upgrade of remote systems, some/all of which may not be online at any specific time.
4. To allow for the distribution of software at or after a specified time
1. When adding files to a distribution, only one server distribution and/or
one client distribution can be worked on at the same time.
2. The NFS exports need to be identical on all servers
2. The system requires NFS access between the systems. In the future the
may be the ability to use ftp, sftp, or scp to transfer files.
3. The "dialog" command for use by the installer. This is available
as part of any recent distribution. If it is not installed, then it
may be available as part of your distribution. The following lines
give the command needed to install the package for some popular
Fedora yum install dialog
CentOS yum install dialog
RedHat (untested) yum install dialog
Ubuntu apt-get install dialog
Debian (untested) apt-get install dialog
If it isn't available in this manner, you can get the source from:
distadd Add files and/or directories to a distribution. Files are not
distributed until committed
distcommit Commit files to distribution
distclean Erase added files from distribution. Currently will only
erase either all files for a server list or all files for
a client list
distpulld Daemon which runs on secondary servers and clients. This
daemon actually pulls files in from the distribution server
distls Provides a tree view of all files/directories in current distribution
distrollback Rolls back the last distribution for the specified distribution
distupdate Updates the distpull software on remote systems.
disttest.sh Set of tests to validate proper functioning of the system
While each command takes different sets of parameters, the parameters
themselves are identical between all the commands.
All commands will be described first, and then all the parameters will be
Parameters for each command are as follows:
The distadd command can be called two different ways; either to install
files on clients, or to send files to secondary servers for installation
on clients of those servers.
For both distadd and distcommit, you can use either -i or -s. The scripts will figure out whether it is a client
or a server distribution list based on the name of the list.
To install files on clients:
distadd -i [client distribution list] -f [source file/directory] -p [full path to destination] [-y]
To install files on secondary servers:
distadd -s [server distribution list] -f [source file/directory] -p [full path to destination] -r [remote distribution list] [-y]
To commit files for distribution to clients:
distcommit -i [client distribution list] [-y]
To commit files for distribution to secondary servers:
distcommit -s [server distribution list] [ -d [install date]] [-t [install time]]
To erase files added but not yet committed:
distclean -i [client distribution list]
distclean -s [server distribution list]
In a crontab on each remote server/client:
To list all files currently waiting for commit:
distls -i [client distribution list]
distls -s [server distribution list]
To roll back the last distribution made:
distrollback -i [client distribution list]
distrollback -s [server distribution list]
To install an update to the distpull software
distupdate -i [client distribution list]
distupdate -s [server distribution list]
client distribution list A list of clients in the configuration file
server distribution list A list of servers in the configuration file
remote distribution list The name of a client distribution list on a secondary server
full path to destination The final destination of the files
-y Don't prompt, just do it.
The following two parameters are used in the distcommit command only. if
either one (or both) are not specified, then the current date/time is used.
If a future date is specified and no time is specified, then 00:01:00 is
used for the time.
install date Distribute files on or after this date
install time Distribute files on or after this time
Problems and solutions
A secondary server is working, but it's clients aren't pulling the files
Make sure the IGNORECASE option is identical on both systems. Otherwise
if a system name has a capitol letter the client won't see the directory