設定ファイルの管理にetckeeper

Author:

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とかに格納されるけど、コマンド間違えると容赦なく消えますからね。

etckeeperでgithubに自動プッシュをする

Facebook にシェア
Pocket