カテゴリー: Tool

ISUCONの予選参加をした後、便利だったので自鯖に取り入れた etckeeper について

etckeeperとは

ツール名の通り、 /etc 以下をバージョン管理してくれるツールのことです。

中身自体は、gitやmercurialなので、違和感なく使えると共に、設定ファイルを書き換える際に、 hogehoge.bk や、 hogehoge.org 等作らずとも、バージョン管理を行ってくれます。

今回は、メインで使っているサーバー(Ubuntu 16.04.3 LTS)への導入をメモ書きとして残しておきます

インストール

Ubuntuを利用している場合、パッケージが既に登録されているので、以下コマンドを実行するだけでインストールすることが出来ます。

apt-get install -y etckeeper

また、パッケージインストールを行うと、Cronへの設定であったり等は行ってくれるため面倒なことはありませんでした。

設定変更

前の章で、etckeeperのインストールが完了したと思います。
次は、etckeeperの設定を変更しましょう。

設定ファイルは、 以下パスに存在します。
エディタ等使い編集を行ってください。

/etc/etckeeper/etckeeper.conf

内容を確認すると、VSCは何を利用するかや、コミットする際のオプション。
リモートレポジトリを用意する場合、名称をどのようにするか設定します

一部抜粋して載せると以下のような設定となりました。


# The VCS to use.
#VCS="hg"
VCS="git"
#VCS="bzr"
#VCS="darcs"

。。。。
。。。。

# The high-level package manager that's being used.
# (apt, pacman-g2, yum, dnf, zypper etc)
HIGHLEVEL_PACKAGE_MANAGER=apt

# The low-level package manager that's being used.
# (dpkg, rpm, pacman, pacman-g2, etc)
LOWLEVEL_PACKAGE_MANAGER=dpkg

# To push each commit to a remote, put the name of the remote here.
# (eg, "origin" for git). Space-separated lists of multiple remotes
# also work (eg, "origin gitlab github" for git).
PUSH_REMOTE="origin"

設定の有効化

etckeeperを動作させるべくinitializeを行います。

etckeeper init

上記コマンドを実行すると、 /etc/.git/ が作成され、 /etc 以下をバージョン管理下としてくれます。

試しに、 /etc に移動し、git status と入力してみてください。
見慣れた、実行結果が返却されるかと思います。

リモートレポジトリの設定

etckeeperの導入と合わせて、 /etc 以下をリモートレポジトリで管理するように設定します。
今回、リモートレポジトリ先としてgitレポジトリを、 bitbucket 上に用意しました。

先程の設定でリモートレポジトリの名称を origin と競って済みなので、
以下のコマンドを実行することで、 etckeeper が変更を検知すると自動的に、pushまで行ってくれます。

実行するコマンドとしては、以下のようになると思います。
ユーザ名や、レポジトリ名は適宜読み替えて実行するようにしてください。

git remote add origin git@bitbucket.org:XXXXXX/etckeeper.git

また、合わせて、rootレポジトリ以下にssh鍵を用意、設定まで済ませるようにしてください。
こちらについては、私の場合は設定済みだったため割愛させていただきますが、実行する内容としては


# cd /root
# mkdir .ssh
# cd .ssh
# ssh-keygen

くらいだと思います。
あとの鍵の登録は、各種サイトによって異なると思いますので調べてみてください

コミットしてみよう

上記すべての設定が完了したら、コミットしてみようと思います。
コミットも簡単で以下のように実行するだけです。


etckeeper commit -m 'first commit'

上記のように実行すると、裏側でVCSのコミットとプッシュが実行されます。

また、中身自他は今回VCSのwrapperなので、(今回は、gitを選択リモートレポジトリもoriginと登録しているため省略)
以下のように実行することも可能です。


# git add /etc/hoge/hoge
# git commit -m 'hoge hoge'
# git push

まとめ

今回、etckeeperを導入してみましたが、
冒頭にも書いたとおり、バックアップファイルや、日付の連番ファイルを大量に作成されることがなくなりました。
ファイル実態が残っていることによる安心感もありますが、サーバー内にゴミファイルが溜まっていくことと、いつか掃除しなければならないと考えると
とても便利なツールであるなと実感しております。

導入も簡単なので是非導入してみてください。

Vagrant synced_folder の設定でつまづいた

Vagrant の synced_folder の設定を書いた際にちょっと起こったお話

いつも通りに Vagrantfileに以下のように書いた

config.vm.synced_folder "/hoge", "/hoge", owner: "hoge", group: "hoge"

よしこれでOKっと思って vagrant reload したら

sync 先の ディレクトリが空になっていた・・・・

記述したところをコメントアウトしてreloadしたら
ディレクトリ内容は元に戻りました

とりあえずsync先のディレクトリをコピーしておいて
syncの設定を記述して中身を元に戻しました

普通に考えたらSyncするんだから空になることは当たり前だったがめちゃくちゃ焦ったのでメモ

もっといい方法とかあったら教えて下さい

Subversionの導入

あるサーバーにSubversionを導入しました 以下忘れないようにメモ書きを

インストール作業

yum install -y subversion mod_dav_svn

設定作業

vim /etc/httpd/conf.d/subversion.conf

Basic認証はすでに使えるものとする。 以下を追加

<Location /repos>
    DAV svn
    SVNParentPath /var/www/svn
    SVNAutoversioning on

    # Limit write permission to list of valid users.
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        AuthType BASIC
        AuthName "User Authorization"
        AuthUserFile <htpasswdファイルがある場所>
        Require valid-user
    </LimitExcept>
</Location>

ディレクトリの作成

mkdir /var/www/svn

所有者の変更

chmod apache:apache /var/www/svn

Apacheの再起動

/etc/rc.d/init.d/httpd restart

レポジトリの作成 sampleのレポジトリ作成

svnadmin create /var/www/svn/sample

ブラウザで youredomein/repos/sample にアクセスし レポジトリが出来ていれば終わり