LoginSignup
3
3

More than 5 years have passed since last update.

etckeeper + remote-git on CentOS

Last updated at Posted at 2015-11-04

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/

関連リンク

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3