This is a page where I want to track different methods of managing large installs. Currently I have 3 sites with ~30 machines in each site. In each site I have a few machines of different classes, for example DNS, Web, Mail, etc. Each of the machines runs the same src release with a slightly custom kernel (+CARP). So I want to build everything from a build box in one location and have all the other use packages from it.
I have a build machine where I have a Jail for each class of machine where I build packages. This machine is where I build the source as well.
I share the packages via NFS to the machines on the local network. Each machine mounts the directory where the packages of the class has been built. I also rsync them out to a machine in each site that then shares them out via NFS to the clients.
I should be able to setup a webserver on the machine where I build them and use `pkg_add -r' to add packages. I think this would require keeping the ports up to date on all the client machines. (Simon points out that this should just use the Latest/ directory and not require keeping the local ports tree up-to-date).
Build the kernel/world on one machine and share /usr/src and /usr/obj out via NFS to the machines in the local site. Then I rsync /usr/src and /usr/obj out to a NFS server in the other sites where the clients can mount it from.
I have been attempting to setup an internal FreeBSD Update Server, but haven't had much luck. When I run the client it deletes a lot of what is on the file system and renders the system unbootable.