Overview
/etc/に限った話では無いが、設定ファイルの構成管理をしたいので幾つか候補を考えている。
chefやAnsibleも良いが、これらはパッケージを含めた構成管理など大掛かりになってしまうので
とりあえずはお手軽な感じでできるetckeeperを使ってみることにした
Actually
単に引き継いだシステムに組み込まれていたものの殆ど活用されておらず
また動作仕様が残されていなかったので調査結果としての備忘録を残すのが目的。
ただし、日々変更が掛かりやすいconfigファイルをpuppet-clientやらchefやらで
大掛かりに管理して吸い上げるのも馬鹿馬鹿しいので設定ファイル等は
それ以下は、etckeeper等に任せる方が気楽かもしれない。
例えばchefを使おうにもどうせ設定ファイルはGitなりに放り込んで管理しておくのだから。
基本はマスターを編集してchef/Ansibleで適用なんだけれど
現実には直接ホストに入って編集してしまうことがままあるので
その辺りのcommit漏れを防ぐというバックアップ要素の方が強いかもしれない。
etckeeper とは
以下のサイトにある文字通り /etc/ の変更管理をする為のアプリケーション
http://etckeeper.branchable.com/
但しあくまで/etcの変更管理を目的として作られたと言うだけで
別に他の場所に適用できないというわけでは無い
リモートgit での管理
ここにも書いてあるが、etckeeperは設定ファイルをVCSで管理すると言っても
リモートのリポジトリにcommitする、というような動作を前提としていない。
従って、リモートのVCSで管理するためにはpush処理をフックしてたたき込んでやる必要がある。
このへんを見ていると、どうやら誰もがそういった要望を持っていたらしくオプションが追加された。
フックしやすくなったと言うだけで別に設定ファイルにremote vcsみたいな物を入れるわけでは無いようだ。
あくまでremote pushをONにするためのフラグが組み込まれた、という程度。
因みにetckeeperの項ではGitと書かず、VCSと書いていたのはGit以外もサポートしているから。
従って、ここではGitを前提として作り込むので、以後はGitのみの設定を記載。
とはいえ、etckeeeperにはフック機能が付いた程度なので、
必要な知識はむしろGitだったりする。etckeeper自体の設定はetckeeper本家でも見ろということで。
実装
etckeeper/gitのインストール
いずれもepel等を使えばyum installでインストール可能なので省略
etckeeperの仕込み - etckeeper.conf の設定
/etc/etckeeper/etckeeper.conf が設定ファイル。
下記のような項目があるのでGitのremote-nameを入れてやる。
- 以下の場合はremote-nameがremoteの場合
# To push each commit to a remote, put the name of the remote here.
# (eg, "origin" for git).
PUSH_REMOTE="remote"
etckeeper の初期化
下記のようにコマンドを実行すると /etc/.git が作られ、管理されるようになる
# etckeeper init
また、 /etc/cron.daily/etckeeper が作成され、autocommitをOFFにしていなければ
1日1回、必要に応じてバックアップが自動的に取られるようになる。
リモートGitの仕込み
…が、やはりremote-gitの設定は作ってくれないようだ。
従ってここからがリモートgitを使う際の肝。
以下のように実行してやるとリモートgitエントリが追加されるので
PUSH_REMOTEで指定したremote-nameにPUSHができるようになる。
# cd /etc
# git remote add [remote-name] [remote-git URL]
- 作成結果
# cd /etc/
# vi /etc/.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "backup"]
url = git://remote-host/remote-host
fetch = +refs/heads/*:refs/remotes/backup/*
関連リンク
- http://etckeeper.branchable.com/
- http://anights.blogspot.com/2014/04/etckeeper.html
- https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AE%E4%BD%9C%E6%A5%AD
- http://jonarcher.info/2015/06/etckeeper-config-version-control/
- http://blog.glidenote.com/blog/2012/04/23/etckeeper-bitbucket/
- https://www.digitalocean.com/community/tutorials/how-to-manage-etc-with-version-control-using-etckeeper-on-centos-7