ホーム > タグ > Linux
Linux
サーバの設定ファイルをsubversionで管理してみる

- 2010-09-25 (土)
- Subversion | バージョン管理
サーバを管理する上で、各種の設定ファイルを管理したくなり、簡単にshellを書いてみました。
スクリプトはとても単純で、自分で用意したsvnレポジトリに指定したファイル/ディレクトリをコミットする、というだけです。
色々やり方はありそうですが、
- 現時点では大量のサーバを管理するわけではなく、あくまで数台レベルでOK
- 自分で分かる技術の方がやりやすい
ということで、自分のsubversionレポジトリに適当にコミットして管理することにしました。
- ローカルにチェックアウトされたsvnレポジトリがあることが前提です。
- そのsvnレポジトリに対して、ファイルシステムのパス(/etc/httpd/など)を保ったまま、コミットします
- ディレクトリごとコミットもできるが、不要なディレクトリの削除はしない(不要なファイルの削除はできる)
- コミットの逆、古いバージョンから戻すコマンドは現時点ではない。実際問題として、戻すようなことは殆ど発生していないため。戻す場合は手動で戻します。
- 何かあったら、svnコマンド直叩きで解決。
使い方
パスの通った箇所に次のファイルを保存して置きます。
また管理するファイル群はroot(sudo)で扱うことが多いので、
実行の際にはsudo addscmしてます。
$ sudo addscm /etc/httpd/conf/httpd.conf ## httpd.confをバージョン管理する場合
$ sudo addscm /etc/httpd/conf.d/ ## conf.dディレクトリ全体をバージョン管理する場合
スクリプトの以下の箇所は環境に合わせて修正下さい。
MAX_SIZEとMAX_COUNTはどちらもディレクトリ全体をバージョン管理する場合のファイル数/ファイルサイズ(KB)の制限値です。
間違ってaddscm /としたときなどに困らないように、この設定を入れています。
REP_DIRはチェックアウトしたローカルのパスです。
複数のサーバの設定ファイルを管理する場合には、server01のところを適当なサーバ名(hostname)で置き換えています。
# edit setting MAX_SIZE=10000 # ディレクトリをバージョン管理する場合の、指定ディレクトリのサイズ制限値(KB)。これを超えると、addscmできない。 MAX_COUNT=100 # ディレクトリをバージョン管理する場合の、指定ディレクトリのファイル数制限値)。これを超えると、addscmできない。 REP_DIR=/home/kuboma/repos/trunk/server/server01/ROOT # レポジトリのコミットパス。予めこのパスにsvn checkoutしておいてください。
コード
見て分かる通り厳密なエラー処理はしてませんし、無茶なコードもあります(svn deleteしてるところとか)ので、くれぐれもご注意を!
またコード上一箇所 rm -iしている箇所があります。
これはディレクトリ単位のバージョン管理の場合に、削除済みファイルを一旦全てローカルの作業コピーから削除するためのものです。
問題なさそうならrm -iを rm -fに変更することをおすすめします。
#/bin/sh
# addscm
#
# TODO: wildcard
#
# $1: source files
# edit setting
MAX_SIZE=10000
MAX_COUNT=100
REP_DIR=/home/kuboma/repos/trunk/server/server01/ROOT
# check REP_DIR
if [ "x${REP_DIR}" = "x" ]; then
echo "REP_DIR is not set. Please set REP_DIR."
exit
fi
# don't edit
ABS_PATH=$(cd $(dirname "$1") && pwd)/$(basename "$1")
if [ -f $ABS_PATH ]; then
# target is file
echo "FILE PATH: ${ABS_PATH}"
elif [ -d $ABS_PATH ]; then
# target is dir(ex: /usr/local/bin )
echo "DIR PATH: ${ABS_PATH}"
DIR_SIZE=`du -sbk ${ABS_PATH} | cut -f 1`
FILE_COUNT=`find ${ABS_PATH} | wc -l`
# dir size check
if [ ${MAX_SIZE} -lt ${DIR_SIZE} ]; then
echo "DIR_SIZE : ${DIR_SIZE}(KB), over MAX_SIZE(${MAX_SIZE})"
exit;
else
echo "DIR_SIZE : ${DIR_SIZE}(KB)... OK"
fi
# file count check
if [ ${MAX_COUNT} -lt ${FILE_COUNT} ]; then
echo "FILE_COUNT: ${FILE_COUNT}(Files), over MAX_COUNT(${MAX_COUNT})"
exit;
else
echo "FILE_COUNT: ${FILE_COUNT}(Files).. OK"
fi
else
# target is not dir, file
echo "Sorry, target is file or dir only."
exit
fi
FILES=`basename "${ABS_PATH}"`
DIR=`dirname ${ABS_PATH}`
COMMIT_DIR=${REP_DIR}${DIR}
echo "mkdir -p ${COMMIT_DIR}"
mkdir -p ${COMMIT_DIR}
# files in repos deleted
if [ -d $ABS_PATH ]; then
echo "rm -i ${COMMIT_DIR}/${FILES}/*"
rm -i ${COMMIT_DIR}/${FILES}/*
fi
echo "cp -pi ${ABS_PATH} ${COMMIT_DIR}"
cp -r ${ABS_PATH} ${COMMIT_DIR}
cd ${REP_DIR}
svn add * --force
svn commit -m "committed by addscm command"
# files in repos deleted
if [ -d $ABS_PATH ]; then
cd ${REP_DIR}
for i in `svn status`; do
if [ "x!" != "x${i}" ]; then
# deleted file
svn delete ${i}
fi
done
fi
cd ${REP_DIR}
svn commit -m "delete committed by addscm command"
echo "success addscm."
関連URL
- Comments: 0
- Trackbacks: 0
UbuntuにFreeNXを利用してリモートから操作する・・・時の不具合を解決

- 2010-09-11 (土)
- Linux
Ubuntuをリモートから操作するのに何が良いのかなと調べてみたらFreeNXというものを見つけました。
VNCなんかが有名ですが使ったことがないので、
どうせ一から覚えるなら新しいのが良さそうということでFreeNXを選択。
Ubuntu Weekly Recipe – FreeNXでリモート・デスクトップ環境を実現する
インストール手順などは上記記事の内容の通りの簡単なものでしたが、
どうやらFreeNXで接続したらキーボードレイアウトが変化するようで一部キーが効かない不具合がありました。
とりあえずは解決しましたが、
他にも潜在的に効いてないキーが見つかった場合にすぐに対処できるようにメモを残しておきます。
- Comments: 0
- Trackbacks: 0
screenの設定

- 2010-09-07 (火)
- Linux
自分用のメモです。
##option
#vbell off
#startup_message on
autodetach on
#defscrollback 20000
#hardstatus on
#hardstatus alwayslastline "%w"
hardstatus alwayslastline "%{= wk} %-w%{=b dk} %n %t %{-}%+w %= [%H] %m/%d %c%{-}"
shell -$SHELL
##key bind
escape ^Jj
bind n screen
bind h prev
bind j next
bind l windowlist
##encoding
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
##window
screen -t vi 1
screen -t bash 2
screen -t db 3
screen -t server 4
select 1
- Comments: 0
- Trackbacks: 1
CentOS 5.4にVMware Server 2.0.2をインストール

- 2010-05-08 (土)
- Linux
CentOS 5.4にVMware Server 2.0.2をインストールしてみました。
インストールするだけなら記事にするほどではありませんが、きちんとした環境を整えるには面倒な手順を踏まないといけませんでした。そこでもしまた同じような環境を整えることがあった場合、また一から調べるのは面倒なので記事にして備忘録とします。
本記事の内容は以下のようになります。
- CentOS 5.4にVMware Server 2.0.2をインストール
- ゲストOSが突然落ちる不具合対策
- Webブラウザを使わずに管理出来るようにする
- Comments: 0
- Trackbacks: 0
Home > Tags > Linux