Claude CodeにProxmoxの仮想環境の管理をさせる
目次
自作PCとサーバ管理
私の自作PCにはProxmoxの仮想化基盤を入れていて、用途に応じて複数のVMを動かしています。たまにPCゲームをするときのためにWindowsが入っていたり、KaggleなどのデータコンペではGPUをパススルーしたUbuntu VMを使ったりと、それなりに複雑な構成になっています。
ただ、こういった仮想化環境の管理は私のようなソフトウェアレイヤーで生きている人間からすると、正直なところ苦手な分野です。Proxmoxの王道的な使い方に則った部分はすんなり使えるものの、少し複雑なことをしようとしたりすると躓いたり、ハードウェア周りの設定などは毎回苦労していました。
しかし、Claude Codeが出てきてからはProxmoxのサーバ管理をほぼ一任するようになりました。例えば以下のようなSSDの障害調査を一任できています。
この記事では、Claude CodeによるProxmox管理のセットアップと実際の運用事例について簡単に紹介します。
セットアップ
やることは単純で、Proxmoxのホスト環境にClaude Codeをインストールするだけです。ProxmoxのベースOSはDebianなので、通常のLinux環境と同様にClaude Codeを導入できます。基本的な設定は普段の開発と変わりませんが、VM等への破壊的な変更などが出来うる状態なので、一定は人間がコマンドを適宜確認するような形での実行が望ましいです。
また、あわせてTailscaleを入れておくと、手元のターミナルからSSHで直接接続できるようになります。ブラウザでProxmoxのWeb UIを開いてShellを立ち上げる手間が省けますし、Claude Codeの操作性もターミナルから直接使うほうがはるかに快適です。
Claude Codeによる様々なタスクの実行
実際にClaude Codeに依頼している作業の例をいくつか挙げます。
- VM/LXCの作成: ISOイメージやテンプレートからのVM・コンテナの新規作成。GPUパススルーの設定が絡むと手順が複雑になりますが、VFIOの設定からinitramfsの更新まで一通り対応してくれます。
- コア数の変更: VMに割り当てるCPUコア数やメモリの変更。
qm setで設定を変えてVMを再起動するだけですが、現在の割り当て状況を確認した上で適切な値を提案してくれます。 - ディスク追加対応: 新しいストレージプールの作成やVMへのディスク追加。LVMのthin pool作成からProxmoxへの登録、VMへの割り当てまでの手順を一貫して実行してくれます。
- SSD障害対応: SSDのSMART情報を確認してエラーの有無を診断したり、障害の兆候があるディスクからのデータ退避を支援してくれます。
nvme smart-logやsmartctlの出力を読み解いて状況を説明してくれるので、判断材料がすぐに揃います。
Proxmoxのホストに入ったClaude Codeは、各種CLIコマンドを通じて仮想環境のほぼすべての操作が可能です。以下は実際に利用しているコマンドの一覧です (これはClaude Codeに過去セッション等をまとめてもらった結果)。
| カテゴリ | コマンド | 用途 |
|---|---|---|
| VM管理 | qm create/set/start/stop/status |
VM作成・設定変更・起動停止 |
qm resize/move_disk/importdisk |
ディスク拡張・移動・インポート | |
qm terminal/guest cmd |
コンソール接続・ゲスト操作 | |
| LXC管理 | pct create/enter/set |
コンテナ作成・ログイン・設定 |
| Proxmox | pvesm status/add |
ストレージ管理 |
pveum role add/user add/aclmod |
ユーザー・権限管理 | |
| LVM | pvs/vgs/lvs |
PV/VG/LV状態確認 |
pvcreate/vgcreate/lvcreate |
PV/VG/thin pool作成 | |
lvremove/wipefs |
LV削除・ディスク初期化 | |
| SSD診断 | nvme smart-log/error-log/self-test |
SMART情報・エラー・診断 |
smartctl -a |
SMART詳細 | |
| HW情報 | lspci/lsblk/lscpu/nproc |
GPU・ディスク・CPU確認 |
| GPUパススルー | modprobe/vfio設定/update-initramfs |
VFIO・nouveau無効化 |
| ディスク操作 | mount/umount/fdisk/kpartx/losetup |
イメージマウント・パーティション確認 |
| ネットワーク | nmap/arp/ip neigh/curl |
ポートスキャン・接続確認 |
| ゲスト内 | fstrim/growpart/lvextend/resize2fs |
TRIM・パーティション拡張 |
Claude Codeはこれらのコマンドを状況に応じて組み合わせて実行してくれます。たとえばディスクの追加であれば、LVMの状態確認から始めてストレージの作成、VMへの割り当て、ゲスト内でのパーティション拡張まで一連の流れを通しでやってくれるので、個別のコマンドを覚えておく必要がありません。
作業ログを自動で残すことでコンテクストを蓄積する
サーバ管理は一度やると次の作業まで期間が開くことが多く、人間ならば前回何をしたか/なぜその構成にしたかをどうしても忘れてしまいます。そこで、Claude Codeに何か作業を依頼したら、最後にその時の作業ログと意思決定の記録を残すようにしています。どのコマンドを実行したか、なぜその設定にしたか、注意点は何かといった情報をMarkdownファイルに書き出させます。人間なら面倒でサボりがちなところを、Claude Codeは淡々とドキュメント化してくれるので、これが地味に一番ありがたい機能かもしれません。また、こうして蓄積されたログはClaude Codeにとっては貴重なコンテクストとなるので、次回以降の作業の精度向上にもつながります。
Claude Codeは何でも知ってるが、やってくれるとは限らない
一方でClaude Codeに任せたことによる失敗事例もあります。VMのディスクをthin pool上に移行した際にdiscard=onオプションを設定し忘れたことで、VM内のファイル削除がthin poolに反映されず、最終的にthin poolのData%が99%まで逼迫しI/OエラーによるVMクラッシュを引き起こした事例がありました。LVM thin provisioningではゲストからホストへTRIMが伝達される設定が必須ですが、こうした暗黙の前提をClaude Codeが考慮できないケースもあります。
ただ、結局のところ頼りすぎは良くないという安易な結論には持って行きたくありません。Claude Codeは結局ユーザの希望を訊いて対応することはできても、暗黙的に依頼背景を理解してよしなく反映してくれることは苦手なのです。タスクを依頼するときは、どういう使い方をする予定なのか、どういう状態が理想なのか、逆にどんなことになってほしくないのかなど、ユーザの希望を明示的に指定する必要があります。そうした細かな部分を逆にClaude Codeに質問してもらうような依頼の仕方やCLAUDE.mdの整備も良いと思います。
まとめ
仮想化環境の管理には幅広い知識が求められますが、Claude CodeのようなAgentを使うことで、その負担は大きく軽減されます。コマンドの使い方を調べたり手順を組み立てたりする時間がほぼなくなり、やりたいことを自然言語で伝えるだけで済むようになりました。サーバ管理の精神的負担も下がるとともに、これまで面倒でやってこなかった些細なことに手を付けられるようになったと感じます。
今後の課題としてはやはりタスクをこなす精度を高めていくという点でしょうか。作業ログを取り続けるとともに、メトリクスを取得したり監視ツールを導入するなどClaude Codeに与えるコンテキストを充実させることで、管理の精度はさらに上がっていくと感じています。