jail の区別がつかないよう!
ansible で FreeBSD-jail を管理しようと悪戦苦闘しています。
FreeBSD-jailの問題。
発展途上のトコロがあって、厳密にコンテナのIDとかで管理する方法がない感じです。
いま問題になるのは、同名のJAILを別のホストで作って、ホスト間移動させるときですね。
- HOSTA/mail
- HOSTB/mail
上記を全てHOSTAに持っていくときは、JAILにつけた仮想ホスト名がキーになっていたりするので、HOSTBで一旦JAILの名前を付け替えてやってから export するみたいな手順をふまないと、大抵は弾かれます。
bastilleBSD では、コンテナを一個のファイルに落とせるので、クローン化が簡単なのが利点ですが、肝心のFreeBSD自体には jail そのものを区別しようとする試みがなかった模様です。
なんで困ってしまうのか。→IDがないから。
docker以来、コンテナを扱う一般世界の常識としての container-ID は必須だと思われます。インスタンスとテンプレート別にIDがあるのは無論ですが、FreeBSD-jailにはどうもその概念が余りはっきりありません。
何を証拠に? と申しますと、 /etc/hostid や /etc/machine-id は 非jail つまり 物理サーバのFreeBSDには最近普通に存在する( FreeBSD 13.2RELから)んですが、jail を作るとそれがないんです。なぜでしょう?
jail で /etc/machine-id を作る。
以下二点で、多分「ユニークなコンテナ」を区別する手がかりができます。
- /etc/rc.d/hostid を使う。 ← IDは表示できた。machine-id は保管はされない(なぜ?)
- /etc/rc.d/hostid_save を使う。 ← このコマンドしないと保管されない。
/etc/amchine-id は どこで使われる?
まず、ansibleで拾える ansible_facts.ansible_machine_id 変数で集めることができます。
稼働しているホスト・JAILを区別なくidで管理しようとしたら、jail だけ得られなくて??状態でしたが
まあとりあえずこれで一つ進みました。
ansibleでサーバ情報を集めて一覧したい。
ちょっと企んでいるんでそのうち出来たら〜