Linuxインフラやっている人はconfファイルよくいじりますよね。 が、confファイルってどうしてもわかりづらくなる。 いつどこを書き換えたかが分からなくなってしまうのですね。 構成管理ツール使うのもいいけど、緊急時とかテストサーバーだと直接書き換えてしまうこともあるでしょう。
そこで、etcディレクトリを丸々gitで管理しちゃえばいいという発想が出てきますね。 それがetckeeperというツールです。
etckeeperはそのまんま、/etc/配下のファイルをvcsで管理してくれるツールでして。 svnは対応してませんがgit、mercurialなどのvcsが使えます。
インストール
yumでインストールしてsudo etckeeper initと叩くだけ。sudo yum install etckeeper sudo etckeeper init
使い方
特に何かする必要は無いです。 毎日自動的に/etc/配下をgit commitしてくれます。 /etc/cron.daily/etckeeperを参考に/etc/cron.hourlyに置けば毎時になるかと。 毎時でetcを書き換えるか、と言われると微妙ですが。 もちろん変更が無ければcommitされません。するものがありません。
yumを叩いた時は自動commitしてくれます。etckeeper: pre transaction commit 更新します : httpd-tools-2.4.6-45.el7.centos.4.x86_64 1/6 更新します : httpd-2.4.6-45.el7.centos.4.x86_64 2/6 更新します : 1:mod_ssl-2.4.6-45.el7.centos.4.x86_64 3/6 整理中 : 1:mod_ssl-2.4.6-45.el7.centos.x86_64 4/6 整理中 : httpd-2.4.6-45.el7.centos.x86_64 5/6 整理中 : httpd-tools-2.4.6-45.el7.centos.x86_64 6/6 etckeeper: post transaction commit
gitコマンドを使う
etckeeper vcs xxxという形で対象vcsのコマンドが使えます。 gitの場合sudo etckeeper vcs logとすればログが見れるし、 sudo etckeeper vcs statusとすれば変更ファイルが見れると。 仕組み的には/etc配下にgit立てているわけですから、cd /etcしてsudo git logとかsudo git statusでも同じ結果になります。
[tea@zero-natasha etc]$ sudo git status # On branch master # Changes not staged for commit: # (use "git add..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: hosts # modified: httpd/conf/httpd.conf # no changes added to commit (use "git add" and/or "git commit -a")
まとめ
普段使う事ってそうそう無いかと思いますが、いざって時のために入れておくと良いかと。 個人ならともかく、企業でやらかすとどえらいことになりますから。 ちなみに自分の個人開発環境はターミナルログイン時、bashrcにcrontab -lを/etc/配下にリダイレクトさせてます。 crontabは/var/spoolとかに格納されるけど、コマンド間違えると容赦なく消えますからね。