* Michael Lockhart <[EMAIL PROTECTED]> [2006-11-02 18:33]:
> All,

        Wrap your bloody lines!

> 
> Here's a question that I wanted to pose to the OpenBSD community about 
> managing and maintaining a large number of OpenBSD systems in the field.  To 
> provide some background, we currently have 650+ OpenBSD 3.2 systems in the 
> field, and I've been dealing with a fair share of headaches bringing our 
> software to a baseline across the board on all these systems.  Keep in mind 
> most of what I'm working on is independent from the OS install itself.  
> Here's the things that I've got solutions in place for, but would like some 
> input on projects available, or good feedback from other's who have 
> maintained a large number of disparate systems:
> 
> 1. Reliable package building system to auto-generate OpenBSD packages that 
> are compliant as much as possible with the standards enforced by OpenBSD.  
> I've got scripts to do this right now, but I'm not happy with them.
>

        I use the built packages from openbsd.org
> 
> 2. Command and Control.  What projects or capabilities are available for 
> performing remote command and control over services, packages, and system 
> health?  Currently, all push/pull is done with perl/sh scripts to bring files 
> over, sanity check, install, update, etc.  I've been leaning towards creating 
> a daemon that runs on each system and has a secure connection back to a 
> centralized location for determining if updates are available.  My proof of 
> concept works, but thoughts on how to do this right are GREATLY appreciated.
>
        ssh gives me pretty much everything I need. for remote console most
of my systems use serial tty's to cisco console servers and the ilk - all of
which hide behind a console server box hooked to a private net running 
conserver from ports. conserver gives me remote console logging and shareing.


> 
> 3. Remote upgrading.  Going from 3.2 -> 3.8 or 4.0 is going to be very 
> difficult, and the approach that I am taking right now is creating a bsd.rd 
> based kernel/image that will boot fully into memory, and contain the 
> appropriate scripts to re-initialized the disks, rsync/scp/ftp/get/whatever 
> the new base image and kernel over, then reboot, and go into the new image, 
> and perform the rest of the upgrade from there.  Has anyone done something 
> similar to this or know of any projects along these lines?
> 

        I do a couple of things for this, depending on what it is.

        To clone systems outright I use a bsd.rd and a variant of the
usual dump | restore ;; installboot, take the master client dump each
filesystem. make a shell script that then sets up filesystems, mounts
them, grabs the aforementioned dumps, feeds them to restore, and then
does an installboot and adjusts /etc/hostname.* and myname.

        The other approach I often do is a siteXX.tgz file. The standard
openbsd installer will look for these and use them. if the tarball contains
an executable site_install script it will also run it. My typical approach
to a site customized distribution is to put a site_install script inside
the siteXX.tgz file as well as any files I want to override from the 
distribution, and
then do pkg_adds in the site_install script.

        Having said that, I'll often do remote upgrading from X.Y to A.B where
the difference between A.B and X.Y isn't a lot. 3.2 to anything modern is
huge. that's not an upgrade, it's a reinstall. I would be testing a sample
on a modern client and deploying new installs based on that.
        -Bob

> Anyway, just wanted to get some feedback from the community and see what 
> everyone had to say on this stuff.  Thanks in advance everyone. 
> 
> Regards,
> Mike Lockhart
>  
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Mike Lockhart        [Systems Engineering & Operations]
> StayOnline, Inc
> http://www.stayonline.net/
> mailto: [EMAIL PROTECTED]
> GPG: 8714 6F73 3FC8 E0A4 0663  3AFF 9F5C 888D 0767 1550
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> 

-- 
#!/usr/bin/perl
if ((not 0 && not 1) !=  (! 0 && ! 1)) {
   print "Larry and Tom must smoke some really primo stuff...\n"; 
}

Reply via email to