# Deploying Upgrades?



## dordal (Mar 2, 2009)

Guys-

I manage about six FreeBSD 6.3 servers (with more on the way). They're all pretty much the same... with the exception of server specific config into like rc.conf and httpd.conf, they all run the same software, including a custom kernel.

It's time to upgrade to FBSD 6.4 (and later FBSD 7)... last time I did this, I did a 
	
	



```
make buildkernel, make buildworld, portupgrade -ar
```
 on each box. Works, but it compiles the same stuff over and over again, once on each box. And requires a couple reboots each.

Seems like there ought to be a way to make an upgrade 'image', and then deploy it out to each box. Thoughts?

D


----------



## ale (Mar 2, 2009)

As an easy beginning you could start using -p flags with portupgrade (after mkdir /usr/ports/packages).
Doing so, on the first machine on which you will upgrade the installed ports, you'll find packages ready to be installed on the others (in the previously created directory). You can move the built packages with an external usb device or share the directory with nfs so that it can be reached by the other machines etc...

If you are running GENERIC, you can consider using freebsd-update
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/updating-upgrading-freebsdupdate.html


----------



## SirDice (Mar 3, 2009)

Export /usr/src and /usr/obj. Build kernel(s) and world. mount the exported /usr/src/ and /usr/obj and do the install/mergemaster on the other servers.


----------



## dordal (Mar 3, 2009)

Thanks guys. Both excellent ideas.

So no tools that help manage deployments of OS updates to lots of boxes? How go Google et. al. do it? Custom tools I guess?


----------



## ph0enix (Mar 8, 2009)

You could probably set up passwordless SSH logins between the boxes and automate the process.


----------



## Mel_Flynn (Mar 8, 2009)

Upgrade 1, rsync the rest and leave config files out of the rsync. The reboots are unavoidable, mergemaster must be taken care of.

Your testserver can be the buildserver for both world and ports. If you don't have one, think about getting one. Minor and major version upgrades can introduce unforseen problems.


----------



## dordal (Mar 17, 2009)

Mel_Flynn said:
			
		

> Your testserver can be the buildserver for both world and ports. If you don't have one, think about getting one. Minor and major version upgrades can introduce unforseen problems.



Not only do I have one, but I have three.  Well, one dev server and two testing servers (one for each model of server we have).

Thx to everybody for the help. I ended up doing the portupgrade with the -p option this time; it saved a LOT of time. For the next round, I think I'll look into some of the other suggestions, like rsyncing system files or copying /usr/obj and /usr/src. 

thx guys


----------

