ホーム > タグ > Linux

Linux

サーバの設定ファイルを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_SIZEMAX_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 -irm -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

UbuntuにFreeNXを利用してリモートから操作する・・・時の不具合を解決 このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

Ubuntuをリモートから操作するのに何が良いのかなと調べてみたらFreeNXというものを見つけました。
VNCなんかが有名ですが使ったことがないので、
どうせ一から覚えるなら新しいのが良さそうということでFreeNXを選択。

Ubuntu Weekly Recipe – FreeNXでリモート・デスクトップ環境を実現する

インストール手順などは上記記事の内容の通りの簡単なものでしたが、
どうやらFreeNXで接続したらキーボードレイアウトが変化するようで一部キーが効かない不具合がありました。

とりあえずは解決しましたが、
他にも潜在的に効いてないキーが見つかった場合にすぐに対処できるようにメモを残しておきます。

全文を読む

screenの設定 このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

自分用のメモです。


##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

CentOS 5.4にVMware Server 2.0.2をインストール このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

CentOS 5.4にVMware Server 2.0.2をインストールしてみました。

インストールするだけなら記事にするほどではありませんが、きちんとした環境を整えるには面倒な手順を踏まないといけませんでした。そこでもしまた同じような環境を整えることがあった場合、また一から調べるのは面倒なので記事にして備忘録とします。

本記事の内容は以下のようになります。

  1. CentOS 5.4にVMware Server 2.0.2をインストール
  2. ゲストOSが突然落ちる不具合対策
  3. Webブラウザを使わずに管理出来るようにする

全文を読む

Home > Tags > Linux

固定ページ
アーカイブ
商品を検索

Return to page top