wiki:dasscm

Version 4 (modified by joergs, on May 7, 2010 at 2:14:56 PM) ( diff )

added some english information

dasscm

dass configuration managment (dasscm) is a simple solution for managing system configuration file with Subversion. It is favored because of its easy setup and low footsprint. It can be easily integrated into Nagios monitoring.

Naming

It is not always easy to get the context of eg. repository, because it can mean "server side svn repository", "package repository", like "RPM repository" or sometimes also your local svn ckeckout. To distinguish between the different terms, we try to use the following terms in a consistent way:

target system the system were dasscm is installed and used
Subverson server the system were your SVN repository is hosted
system files config and other files on your system, like /etc/ntp.conf
system files managed by dasscm the part of your system files that has already been checked in to Subversion via dasscm
local svn checkout your local svn checkout on the target system
svn repository the Subversion repository were the "system files managed by dasscm" are versioned
package repository the installation source repository for dasscm

Repository

package repositories (RPM and DEB) http://download.opensuse.org/repositories/home:/dassit/
source code source:dasscm/trunk

About

dasscm is a wrapper Perl script around the svn command. If you're planing to check-in your system configuration files into a Subversion repository, dasscm eases your life.

Instead of copying files from the system to the corresponding local subversion checkout directory and commit them there, you just use:

dasscm login
dasscm add /etc/ntp.conf

Missing directories are added automatically.

But the real advantage, compared to plain svn is, that there is the possibility to check, if your local system files have changed against the repository. Just call:

dasscm status

For Nagios NRPE integration use

dasscm check

Usage

Subcommands

dasscm suppots following subcommands:

help
init
login <username>
up <path>
ls <path>
add <path>
commit <path>
revert <path>
diff <path>
status <path>
check
cleanup
permissions

Pre-Requirements

  • an existing empty directory in a subversion repository. Normally you create a new directory of every dasscm installation (like http://mysubversionserver/config/HOSTNAME)
  • a user with read permissions to this subversion repository. The username dasscm is a good choice

Configuration

After installing it is required to configure dasscm. All configuration changes have to be done in the file /etc/dasscm.conf

#
# dasscm configuration
#

#
# TODO:
# - set unique DASSCM_REPOSITORY_NAME.
#   Normally use the full qualified hostname
# - for security reasons, it is recommended
#   to set DASSCM_CHECKOUT_USERNAME and DASSCM_CHECKOUT_PASSWORD
#   individually (maybe host specific)
#

# 
# host specific name
# it is required, to set this unique
# normally, use the result of `hostname -f`
#
DASSCM_REPOSITORY_NAME=

#
# local base directory
#
DASSCM_LOCAL_REPOSITORY_BASE=/var/lib/dasscm/

#
# subversion server settings
# 
#DASSCM_SVN_REPOSITORY_BASE=https://svn.dass-it/svn/internal-dasscm/
#DASSCM_CHECKOUT_USERNAME=dasscm
#DASSCM_CHECKOUT_PASSWORD=

#
# file to store the permissions of the checked-in file
# 
DASSCM_PERMISSION_FILE="/etc/permissions.d/dasscm.permission_backup"

Set the following variables according to your needs:

DASSCM_REPOSITORY_NAME=system-name normally hostname -f
DASSCM_CHECKOUT_USERNAME=dasscm subversion user with read-only permissions
DASSCM_CHECKOUT_PASSWORD=dasscm-password subversion password for $DASSCM_CHECKOUT_USERNAME
DASSCM_SVN_REPOSITORY_BASE=http://your-svn-repository/path/ subversion directory in which the $DASSCM_REPOSITORY_NAME directory is located

If it not already exists, you can create your subversion subdirectory by

source /etc/dasscm.conf
svn mkdir -m "initial" --no-auth-cache $DASSCM_SVN_REPOSITORY_BASE/$DASSCM_REPOSITORY_NAME

Once

Um dasscm nutzen zu können muss man sich zuerst anmelden.

<code bash>dasscm login</code>

Datei erstmalig anpassen und einpflegen

Hier als Beispiel die Konfiguration von cups:

<code bash>

cd /etc/sysconfig cp -a cups cups.orig ; #(falls cups.orig nicht schon existiert) dasscm add -m "orig" /etc/sysconfig/cups /etc/sysconfig/cups anpassen dasscm commit -m "Kommentar zu meinen Anpassungen" cups

</code>

modifizierte Datei einpflegen

<code bash>dasscm commit -m "Kommentar zu meinen Anpassungen. Warum würde diese Datei geändert" /etc/sysconfig/cups </code>

Status überprüfen

<code bash> dasscm status </code> ermittelt, welche Dateien sich zwischenzeitlich auf dem System verändert haben

Dateirechte sichern

bei jeden dasscm add/commit werden die Dateirechte unter /etc/permissions.d/dasscm.permissions_backup gesichert.

Help

Für dasscm existiert auch eine Hilfe <code bash> dasscm help </code>

dasscm als nicht-root Benutzer

Hierfür muss die Datei /etc/dasscm.conf lesbar sein und eine sudo Regel für dasscm existieren.

Am besten über eine zentrale Gruppe dasscm (LDAP). Standard GID-Number ist 4199.

warum sudo?

Ohne sudo läßt sich nicht sicherstellen, dass der Benutzer Zugriff auf alle Dateien erhält, die sich im Produktivsystem befinden.

Falls eine Datei keine Leserechte für Other besitzt, kann beim status keine Differenz zwischen dieser Datei und dem Repository ermittelt werden.

Konfiguration

<code bash> getent group dasscm # 4199:*:dasscm:joergs,maik

# Leserechte für die Gruppe dasscm chgrp dasscm /etc/dasscm.conf

# der Gruppe dasscm die Benutzung von dasscm erlauben echo " Defaults env_keep+=DASSCM_USERNAME Defaults env_keep+=DASSCM_PASSWORD dasscm ALL=(ALL) NOPASSWD:/usr/bin/dasscm" >> /etc/sudoers </code>

Benutzung

<code bash> # Anmelden dasscm login

sudo dasscm status

sudo dasscm ls

sudo dasscm add <DATEINAME> </code>

Nagios/NRPE Check

Client-seitige Konfiguration für NRPE

<code bash> # nrpe config file CFG=/etc/nagios/nrpe.cfg

# überprüfen als welcher Benutzer nrpe läuft NRPE_USER=sed -n 's/nrpe_user=//p' $CFG echo "NRPE_USER: $NRPE_USER"

# zu sudoers hinzufügen

grep -q "dasscm check" /etc/sudoers
echo "$NRPE_USER ALL=(ALL) NOPASSWD:/usr/bin/dasscm check" >> /etc/sudoers

# sicherstellen, dass check_dasscm für nrpe definiert ist

grep -q dasscm $CFG
echo "command[check_dasscm]=sudo dasscm check" >> $CFG

# nrpe neu starten /etc/init.d/nrpe restart </code>

Wie schon bei Benutzern beschrieben, wäre der Zugriff auch ohne sudo denkbar. Dann würden aber ggf. nicht alle veränderten Dateien erkannt.

Besonderheit auf RedHat / CentOS

Damit Sudo über nrpe oder ssh funktioniert muss folgende Option in /etc/sudoers/ auskommentiert werden:

# Defaults requiretty

Unter Suse Systemen ist das bereits voreingestellt.

Release Notes

dasscm 0.9

Änderungen gegenüber den Vorgängerversionen

  • "dasscm commit <dir>": überträgt alle Änderungen unterhalb von <dir>. Dort gelöschte Dateien werden auch auf dem Server gelöscht.
  • mehr Kommandos können jetzt auch mit Pfaden umgehen: "ls", "diff", "up", "status"
  • Die Datei /etc/subversion/servers.dass-it existiert nicht mehr. Sie wird jetzt als Dokumentaion unter /usr/share/doc/packages/dasscm/subversion-servers.dass-it mitgeliefert.
  • "dasscm status" liefert bei nicht eingecheckten Änderungen den Fehlercode 1, ansonsten 0.
  • Ein login ist nur noch für die Kommandos "add" und "commit" notwendig. Somit lässt sich ein "dasscm status" auch gut ins Nagios integrieren.

Bugfixes

  • Passwörter können jetzt auch Leerzeichen und Sonderzeichen (z.B. "&") beinhalten.

{{tag>Interne_Technik dasscm nrpe}}

usage (German)

from dasscm/trunk/doc/README:

Include(source:dasscm/trunk/doc/dasscm_howto.txt, text/plain)

Note: See TracWiki for help on using the wiki.