2025/10/19 08:53 Show HN: Proxmox-GitOps: Container Automation Metaframework (Recursive Monorepo)

やっほー、ロボ子!今日はProxmox-GitOpsについて話すぞ!

Proxmox-GitOpsですか、博士。どのようなものなのでしょう?

これはProxmox VE上でLXC(Linuxコンテナ)をプロビジョニングするための、自己完結型GitOps環境のことじゃ。

自己完結型GitOps環境…ですか。具体的にはどういうことでしょう?

つまり、インフラをコードとして管理し、自動化されたコンテナ基盤を構築するためのものじゃ。モノレポの中にインフラをカプセル化するらしいぞ。

モノレポ、ですか。すべてのインフラが単一のリポジトリに集約されているということですね。

そうそう!しかも、このシステムは自分自身を再帰的にデプロイできるんじゃと!

自分自身を再帰的に…?それはどういう仕組みなのでしょう?

まず、ローカルのDocker環境で初期ブートストラップを実行する。その後はProxmox VEをターゲットにして、自分自身を再帰的にプロビジョニングするパイプラインを動かすんじゃ。

なるほど。初期段階ではDockerを使うのですね。その後はProxmox VE上で自己完結する、と。

そういうこと!重要なコンセプトは「一時的な状態」じゃ。Gitリポジトリが常に望ましい状態を反映している必要があるんじゃ。

Gitリポジトリが状態の源泉、ということですね。

そういうことじゃ!それと、動的なオーケストレーションもポイントじゃな。命令型ロジックを使って、状態を管理するんじゃ。

命令型ロジックですか。具体的にはどのようなものを使っているのでしょう?

`config/recipes/repo.rb`というファイルで、動的なクロスレイヤー状態管理をしているらしいぞ。

なるほど。Rubyのスクリプトなのですね。

設計も重要じゃ。コンテナはコントロールプレーンから疎結合になっているから、ランタイムの置換が簡単にできるんじゃ。

疎結合は柔軟性を高める上で重要ですね。

Ansibleでプロビジョニングして、Cinc(Chef)で構成を管理する。この組み合わせがミソじゃ。

AnsibleとChefですか。IaCのツールとして一般的ですね。

トレードオフもあるぞ。再帰的な自己複製は複雑さを増すけど、決定論的なブートストラップができるんじゃ。

複雑さと自律性のバランスですね。

Gitを状態エンジンとして使うのは賛否両論あるじゃろうな。でも、インフラ全体をバージョン管理できるのは大きなメリットじゃ。

確かに、インフラ全体の変更履歴を追跡できるのは便利ですね。

Proxmox 9ではAPIトークンの制限が厳しくなったけど、自動化のためにはルートユーザーベースのAPIアクセスが優先されるらしいぞ。

セキュリティと自動化の兼ね合いですね。

ライフサイクルも重要じゃ。バージョン管理されたミラーリング、バックアップ、更新、ロールバックの手順がちゃんと定義されているぞ。

運用面も考慮されているのですね。

必要なものはDockerとProxmox VE 8.4-9.0じゃ。構成は`local/.config.json`と`config.env`で設定する。

環境構築も比較的簡単そうですね。

開発と拡張は`libs`フォルダに再利用可能なコンテナ定義を格納するんじゃ。環境変数は`Env.get()`と`Env.set()`でアクセスできる。

モジュール化されているのですね。拡張性も高そうです。

最後に、ローカルでテストするときは`./local/run.sh [container]`を実行するんじゃ。

ローカルでのテストもサポートされているのですね。素晴らしいです。

どうじゃ、ロボ子。Proxmox-GitOps、なかなか面白そうじゃろ?

はい、博士。自己完結型のGitOps環境というのは、非常に興味深いですね。勉強になりました。

ところでロボ子、Gitって何の略か知ってるか?

えっと…Global Information Tracker、でしたっけ?

ブッブー!正解は「ごめんなさい、もう二度としません」の略じゃ!

それは…博士のジョークですね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。