# Administrating more than 10 servers



## Ahmed (Oct 24, 2010)

Hi folks,

Lately I was put in charge to administrate 12 FreeBSD servers, and I was wonder what is the best way to administrate/monitor/follow-up/update/patch these servers such that all work like a clockwise with each other with the exact same updates?

I wrote few scripts that notifies me with system failure and updates, but I want to manage the servers more efficiently.

Any advice/guide is much appreciated.


----------



## SIFE (Oct 24, 2010)

try sshcluster.


> Lately I was put in charge to administrate 12 FreeBSD servers, and I was wonder what is the best way to administrate/monitor/follow-up/update/patch these servers such that all work like a clockwise with each other with the exact same updates?


Do you want some help .


----------



## fronclynne (Oct 24, 2010)

I can't really speak to minister/monitor/follow-up, but as far as update/patch goes, I would use (for the base system) *either* freebsd-update(8) with the actual workdir shared via NFS (see the -d option), *or* doing the normal buildworld/buildkernel on one machine (& testing it to make sure something didn't break) and sharing the src & object directories via NFS again.

For ports(7): have a central machine build everything as packages and export those as well.

This is assuming they're all on the same version/architecture.  Having a separate machine for testing purposes may save you a lot of hair-pulling, & that machine can probably function as the central repository as well.


----------



## anomie (Oct 25, 2010)

Some other ideas to consider -

I'm using sysutils/webmin to manage a small cluster of six (Linux) servers. Webmin comes with a few useful cluster modules, that are capable of: 

 copying files from one node to some or all of the others
 running a shell command on some or all of the nodes
 managing users, groups, and passwords on some or all of the nodes
I rolled my own distributed HIDS (Bourne shell), and my own rudimentary configuration management utility (Bourne shell). 

If you expect to be adding more servers in the future and are willing to make the upfront time investment, you may want to start looking at sysutils/cfengine3, or sysutils/puppet, or one of their ilk.


----------



## Christopher (Oct 26, 2010)

I have a main fileserver stow packages for all of my FreeBSD boxes.  The packages are built inside a jail and then placed on a local nfs server.  When I bring a new machine online, I boot it off the network via pxeboot.  The installer script asks the user what the "personality" of the system is to be, e.g. a web server, database server, administrative server, proxy server, etc.  The "personality" defines what packages get installed on the system.

Next, the system is associated with my puppet server.  Puppet pushes out configuration for each of the services running on the system, such as apache, mysql, etc.  Future configuration changes are done by teaching puppet how to do the configuration change, and running puppet on each of the impacted servers via ssh.

Upgrading ports is done by rebuilding the package on the nfs server, then using pkg_upgrade (from sysutils/bsdadminscripts ) to do an upgrade.


----------



## nORKy (Oct 26, 2010)

Hi,

How, do you install created packages (portmaster -g ??) on all servers (what is the nfs mountpoint ? witch command ?)


----------



## SirDice (Oct 26, 2010)

nORKy said:
			
		

> How, do you install created packages (portmaster -g ??) on all servers (what is the nfs mountpoint ? witch command ?)




```
# mount build.server:/some/place/with/packages /mnt
# cd /mnt
# pkg_add somepackage.tbz
```


----------

