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

etckeeperとは

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

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

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

インストール

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


apt-get install -y etckeeper

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

設定変更

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

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


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

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

コメントを残す