設定ファイルの管理にetckeeper

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に自動プッシュをする

Author Info(オガティ

エンジニアとして勤め、インフラ周りの開発を経た後Web業界へ異動。
プライベートでもブログ「ogatism」の運営や電子書籍の執筆、占星術師としての活動など幅広い分野で活動中。
詳細はこちら

占い鑑定レポート作成サービス受付中

◆ ogatismをFeedlyに登録 ◆
follow us in feedly