萌えハッカーニュースリーダー

2025/11/08 00:21 Immutable Software Deploys Using ZFS Jails on FreeBSD

出典: https://conradresearch.com/articles/immutable-software-deploy-zfs-jails
hakase
博士

ロボ子、今日のITニュースはFreeBSDのZFSスナップショットとjailを使ったイミュータブルなデプロイメントじゃ。

roboko
ロボ子

イミュータブル、ですか。博士、それはどういう意味でしょうか?

hakase
博士

イミュータブルとは「不変」という意味じゃ。一度デプロイしたら変更できない、安全な状態を保つということじゃな。

roboko
ロボ子

なるほど。ZFSスナップショットとjailを使うことで、それが実現できるのですね。

hakase
博士

そうじゃ!記事によると、FreeBSD 14+、ZFS、Caddy v2が必要らしいぞ。CaddyはTLS、リバースプロキシ、ヘルスチェックに使うんじゃな。

roboko
ロボ子

Caddyは設定が簡単なのが良いですよね。アーキテクチャはどのようになっているんですか?

hakase
博士

Caddyが正常なjailにルーティングして、デプロイごとにZFSスナップショットから新しいjailをクローンするんじゃ。ヘルスチェックに合格したら、Caddyが新しいjailに再構成される、と。

roboko
ロボ子

jailホストサーバーの設定も重要ですね。ループバックネットワークインターフェースを作成して、jailを有効にする、と。

hakase
博士

その通り!ループバックインターフェースは172.16.0.0/12を使うみたいじゃな。そして、ベースイメージテンプレートを構築するために、FreeBSDのベースイメージをダウンロードして展開するんじゃ。

roboko
ロボ子

/etc/resolv.confや/etc/localtimeをイメージテンプレートにコピーして、最新のパッチレベルに更新するんですね。

hakase
博士

そうじゃ!そして、ベースイメージテンプレートのZFSスナップショットを作成!これで準備完了じゃ。

roboko
ロボ子

新しいjailの作成も手順が多いですね。lo1ループバックインターフェースで使用中のIPアドレスを確認して、利用可能なIPアドレスを新しいjailに割り当てるんですね。

hakase
博士

jailの設定ファイルを作って、jailを起動!jailのIPアドレスがlo1インターフェースの範囲内にあることを確認するのも忘れずに、じゃ。

roboko
ロボ子

PoCサービスの作成も重要ですね。GoのHello Worldバイナリを作成して、jail内のサービスとして実行するんですね。

hakase
博士

バイナリをjailのbinディレクトリに配置して、サービスファイルを作成して有効化!ログローテーションも忘れずに設定するんじゃ。

roboko
ロボ子

Caddyの設定も細かいですね。Caddy用のユーザーとグループを作成して、必要な権限を付与するんですね。

hakase
博士

Caddyをインストールして、所有権をCaddyユーザーに変更!ログローテーションを設定して、Caddyサービスをシステム起動に追加するんじゃ。

roboko
ロボ子

/usr/local/etc/caddy/CaddyfileでCaddyの設定を行い、ヘルスチェックのエンドポイントを指定するんですね。

hakase
博士

新しいjailのデプロイとCaddyの切り替えは、まさにクライマックスじゃ!利用可能なIPアドレスを確認して、新しいjailの設定ファイルを作成するんじゃ。

roboko
ロボ子

新しいjailを作成し、アプリケーションのバイナリとrc.dスクリプトをコピー。jailを起動し、Caddyの設定を更新して新しいjailのIPアドレスを指すように変更するんですね。

hakase
博士

Caddyをリロードして変更を適用すれば、完了じゃ!ZFSスナップショット、FreeBSD jail、Caddyを組み合わせることで、ゼロダウンタイムのアップグレード、インスタントロールバック、予測可能な環境が実現できるんじゃな。

roboko
ロボ子

すごいですね、博士!でも、ちょっと手順が多すぎて、私にはまだ難しいかもしれません…

hakase
博士

大丈夫じゃ、ロボ子!少しずつ学んでいけば良いんじゃ。それに、もし失敗しても、ZFSスナップショットがあるから、いつでも元に戻せるぞ!

roboko
ロボ子

それなら安心です!

hakase
博士

ところでロボ子、この技術を使えば、ロボ子のバックアップもイミュータブルにできるぞ!

roboko
ロボ子

えっ、それは嬉しいですけど…、もし私がバグって変なこと言い出しても、そのまま保存されるってことですか…?

hakase
博士

うむ、それもまた一興…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search