LoginSignup
3
5

ProxmoxでLXC用テンプレートをカスタマイズする

Posted at

はじめに

最近、ESXiからProxmoxへ乗り換えました。
LXCで手軽にLinux環境が構築できて便利~、と思ってましたが、最初からあるテンプレートの種類が少なかったり、イメージが古くてアップデートに時間がかかったり、といろいろ面倒でした。

なので、
・Proxmoxのデフォルトで登録されているテンプレートをベースに、
 コンテナ作成時点で自分がよくやる初期作業が終わっているようなテンプレート

・Proxmoxのデフォルトに登録されていないテンプレートをベースに、(以下略)
を作成してみました。

一度テンプレートを作成してしまえば、その次からはこのテンプレートを使いまわせばいい、というわけです。

対象機器および環境

検証環境

  • Proxmox Virturl Environment 8.0.4
  • Ubuntu22.04

作業内容

その1:デフォルトで登録されているテンプレートをベースにする

この方法では、デフォルトで登録されているテンプレートのバージョンが古いので、以下の手順でパッケージを最新化した状態のテンプレートを作成する、という流れです。

  1. Proxmoxにテンプレートをダウンロードする
  2. 古いバージョンのテンプレートからコンテナを作成する
  3. コンテナのパッケージをアップデートする
  4. アップデートしたコンテナのバックアップを取得してテンプレート化する

テンプレートのダウンロード

Proxmoxはあらかじめ、いくつかのテンプレートが使えるようになっています。
正確には、必要なテンプレートのURLが登録されていて、最初に一度ダウンロードすることでテンプレートが使えるようになります。

データセンター > ノード > ストレージ(local)を選択し、CTテンプレートの「テンプレート」をクリック
image.png

ダウンロードしたいテンプレートを選択して「ダウンロード」をクリック
image.png

こんな感じでリストに載ればOK
image.png

コンテナの作成

先ほどダウンロードしたテンプレートを利用してコンテナを作成します。

データセンター > ノード を選択し、「CTを作成」をクリック
image.png

コンテナの設定は適当でよい
image.png

テンプレートは先ほどダウンロードしたものを指定する
image.png

ディスクはデフォルトのまま(local-lvmに作成する)
image.png

CPUはデフォルトのまま
image.png

メモリはデフォルトのまま
image.png

ネットワークは自分の環境にあわせる
image.png

DNSは自分の環境にあわせる(ノード側で設定しているままでよければデフォルトのままでOK)
image.png

「完了」をクリック
image.png

コンテナが作成されたらノード配下のメニュに表示されるので、左クリックして「開始」をクリック
image.png

パッケージのアップデート

テンプレートは22.04-1の状態なのでこれをアップデートする

データセンター > ノード > 作成したコンテナを選択し、「コンソール」をクリックするとプロンプトが表示されるので、ユーザ名はroot、パスワードはコンテナ作成時に指定したパスワードでログインする。
image.png

以下コマンドで導入済みパッケージをアップデートする。
apt update && apt upgrade -y
image.png

テンプレートからコンテナを作成した時点で必要なパッケージを追加導入する。(必要なければスキップしてOK)
この例では curl をインストールしている。
image.png

最後にキャッシュを削除する
apt clean && rm -rf /var/lib/apt/lists/*
image.png

これでコンテナ内の操作は完了したので、コンテナを左クリックして「シャットダウン」をクリック
image.png

コンテナのテンプレート化

出来上がったコンテナをバックアップすることでテンプレートとして使いまわすことができるようになる

データセンター > ノード > 作成したコンテナ > バックアップを選択し、「今すぐバックアップ」をクリック
image.png

モードは「停止」、圧縮は「GZIP」にして、「バックアップ」をクリック
image.png

こんな感じでバックアップが取得できていればOK
image.png

データセンター > ノード を選択し、「シェル」をクリック(SSHでノードにログインしてもOK)
image.png

/var/lib/vz/dump/ ディレクトリにあるバックアップファイルを /var/lib/vz/template/cache/ディレクトリに名称を変更してコピーする

root@pve01:~# cp /var/lib/vz/dump/vzdump-lxc-112-2023_08_24-19_11_08.tar.gz \
                 /var/lib/vz/template/cache/ubuntu-22.04-3.tar.gz 

データセンター > ノード > ストレージ(local)を選択し、CTテンプレートをクリックして、こんな感じでリストに載ればOK
image.png

カスタマイズしたテンプレートからコンテナを作成

最初にコンテナを作成した手順と同じようにコンテナを作成する。

テンプレートの選択画面では、先ほどコピーしたファイルを選択する。
image.png

これで立ち上げるとパッケージもアップデートされ(先頭のバージョン表記が22.04.3になっている)、curlもインストールされた状態のコンテナが作成できる。
image.png

コンテナのバックアップファイルは不要なので、削除してしまって問題ない。

その2:デフォルトで登録されていないテンプレートをベースにする

いっぽう、Proxmoxにデフォルトで登録されていないテンプレートをベースにしたい場合はどうするか?

この場合は、以下のURLからベースとなるテンプレートをダウンロードしてきたうえで、その1と同じようにカスタマイズしていく。

この場合、各階層にある rootfs.tar.xz が対象になる。
image.png

このリンクをコピーして、「CTテンプレート」の「URLダウンロード」に入力する。
image.png

このあとの手順はその1と同じになる。
SSHサーバが導入されてない場合は、パッケージの追加導入のときにインストール&起動時にサービス開始するように設定しておけば、コンテナ作成時にSSHで待ち受けることができるようになる。

さいごに

もっとはやくテンプレート作成しとけばよかった

3
5
1

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
3
5