From owner-freebsd-questions@FreeBSD.ORG Sun Feb 25 22:03:12 2007 Return-Path: X-Original-To: freebsd-questions@freebsd.org Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 08B4A16A403 for ; Sun, 25 Feb 2007 22:03:12 +0000 (UTC) (envelope-from freebsd@deathbeforedecaf.net) Received: from qsrv03ps.mx.bigpond.com (qsrv03ps.mx.bigpond.com [144.140.82.183]) by mx1.freebsd.org (Postfix) with ESMTP id 9CED413C441 for ; Sun, 25 Feb 2007 22:03:11 +0000 (UTC) (envelope-from freebsd@deathbeforedecaf.net) Received: from mail.0x7e.net ([121.209.32.118]) by omta05ps.mx.bigpond.com with ESMTP id <20070225203117.UIVI19269.omta05ps.mx.bigpond.com@mail.0x7e.net> for ; Sun, 25 Feb 2007 20:31:17 +0000 Received: from qux.0x7e.net ([10.10.10.10]) by mail.0x7e.net with esmtp (Exim 4.43 (FreeBSD)) id 1HLQ1d-0004eg-3I for freebsd-questions@freebsd.org; Mon, 26 Feb 2007 07:01:17 +1030 Mime-Version: 1.0 (Apple Message framework v752.2) Content-Transfer-Encoding: 7bit Message-Id: <2D57E1E1-DDD0-41AA-9CE2-000B830B5798@deathbeforedecaf.net> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed To: freebsd-questions@freebsd.org From: Rob Date: Mon, 26 Feb 2007 07:01:16 +1030 X-Mailer: Apple Mail (2.752.2) Subject: Using source control to manage system configs X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Feb 2007 22:03:12 -0000 Dear List, I'd like some advice on managing config files on multiple servers with a source control system. The idea is to update files locally, and commit them back to a central repository. I know that CVS is the usual choice, but there are a couple of things that I can't get CVS to do. Overlapping directories ----------------------- Some files (/etc/ntp.conf, /etc/resolv.conf) are identical across a site. Instead of duplicating these in the repository, I'd like to create a module like hosts/shared/etc that gets installed on every server. Then each server has a module like hosts/$HOST/etc that adds to or overwrites these files. If a file is updated locally, it is committed back to the correct module. CVS (quite reasonably) won't checkout 2 modules to the same working directory. Filemodes & symlinks -------------------- CVS only works with regular files, and doesn't preserve permissions. I can work around this with mtree(8) and module programs, but it would be nice to have it built-in. So... has anyone come up with a neat way to do these things in CVS, or an SCM system that does it better? Thanks Rob.