まず、chezmoiというのはドットファイルを管理するソフトです。よって/etc
下にあるコンフィグファイルの管理には本来適していません。やめておいたほうが良いです。
ただ、ほとんど一緒だけどほんの少しだけ違うkeepalivedのコンフィグファイルをgit管理するにあたり、chezmoiを使用するのが一番簡単だったので、使用することにしました。
haproxy.cfgをchezmoiで管理する
これはどの端末も一緒になると思うので簡単です。
/etc/haproxy/haproxy.cfg
を~
にコピーします。
cp /etc/haproxy/haproxy.cfg ~/
そして元のファイルの名前を変えておきます。
mv /etc/haproxy/haproxy.cfg.bak
chezmoiに追加
chezmoi add ~/haproxy.cfg
最後にシンボリックリンクを貼る
ln -s /root/haproxy.cfg /etc/haproxy/haproxy.cfg
当然ながらrootUserでない場合は/home/user
にしておいてください。今回はhaproxyとkeepalivedしか入っていないlxcコンテナなのでrootです。
Keepalivedを環境に応じてちょこっと変える
chezmoi cd
そこでkeepalived.conf.tmpl
ファイルを作成。
vrrp_script chk_haproxy {
script 'killall -0 haproxy' # faster than pidof
interval 2
}
vrrp_instance haproxy-vip {
interface eth0
state {{ if eq .chezmoi.hostname "master" }}MASTER{{ else }}BACKUP{{ end }}
priority {{ if eq .chezmoi.hostname "master" }}200{{ else }}100{{ end }}
virtual_router_id 51
virtual_ipaddress {
0.0.0.0/26
}
track_script {
chk_haproxy
}
}
設定は適当ですが、.chezmoi.hostname
でhostnameによってMASTER, BACKUPを切り替えができます。priorityについても同様。あとは次にchezmoi applyとしたときに~/keepalived.confがhostnameに応じて自動的に生成されます。あとvirtual_ipaddressは自分の設定したいVIPを入れておいてください。念のため。
chezmoi apply
ln -s /root/keepalived.conf /etc/keepalived/keepalived.conf
これでkeepalived, haproxyの設定ファイルをchezmoiで管理できました。一応、etckeeperなどもありますが、この要件を満たすのにはちょっとやりすぎ感があるので、シンプルに使えるchezmoiでもどうでしょう。まあ本来はconfigファイルを管理するソフトじゃない、ということをちゃんと意識した上で使ったほうが良いと思います。