0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HAProxyとKeepalivedの設定ファイルをchezmoiでgit管理する

Posted at

まず、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ファイルを作成。

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ファイルを管理するソフトじゃない、ということをちゃんと意識した上で使ったほうが良いと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?