はじめに
最近、ESXiからProxmoxへ乗り換えました。
LXCで手軽にLinux環境が構築できて便利~、と思ってましたが、最初からあるテンプレートの種類が少なかったり、イメージが古くてアップデートに時間がかかったり、といろいろ面倒でした。
なので、
・Proxmoxのデフォルトで登録されているテンプレートをベースに、
コンテナ作成時点で自分がよくやる初期作業が終わっているようなテンプレート
・Proxmoxのデフォルトに登録されていないテンプレートをベースに、(以下略)
を作成してみました。
一度テンプレートを作成してしまえば、その次からはこのテンプレートを使いまわせばいい、というわけです。
対象機器および環境
検証環境
- Proxmox Virturl Environment 8.0.4
- Ubuntu22.04
作業内容
その1:デフォルトで登録されているテンプレートをベースにする
この方法では、デフォルトで登録されているテンプレートのバージョンが古いので、以下の手順でパッケージを最新化した状態のテンプレートを作成する、という流れです。
- Proxmoxにテンプレートをダウンロードする
- 古いバージョンのテンプレートからコンテナを作成する
- コンテナのパッケージをアップデートする
- アップデートしたコンテナのバックアップを取得してテンプレート化する
テンプレートのダウンロード
Proxmoxはあらかじめ、いくつかのテンプレートが使えるようになっています。
正確には、必要なテンプレートのURLが登録されていて、最初に一度ダウンロードすることでテンプレートが使えるようになります。
データセンター > ノード > ストレージ(local)を選択し、CTテンプレートの「テンプレート」をクリック
ダウンロードしたいテンプレートを選択して「ダウンロード」をクリック
コンテナの作成
先ほどダウンロードしたテンプレートを利用してコンテナを作成します。
データセンター > ノード を選択し、「CTを作成」をクリック
DNSは自分の環境にあわせる(ノード側で設定しているままでよければデフォルトのままでOK)
コンテナが作成されたらノード配下のメニュに表示されるので、左クリックして「開始」をクリック
パッケージのアップデート
テンプレートは22.04-1の状態なのでこれをアップデートする
データセンター > ノード > 作成したコンテナを選択し、「コンソール」をクリックするとプロンプトが表示されるので、ユーザ名はroot
、パスワードはコンテナ作成時に指定したパスワードでログインする。
以下コマンドで導入済みパッケージをアップデートする。
apt update && apt upgrade -y
テンプレートからコンテナを作成した時点で必要なパッケージを追加導入する。(必要なければスキップしてOK)
この例では curl
をインストールしている。
最後にキャッシュを削除する
apt clean && rm -rf /var/lib/apt/lists/*
これでコンテナ内の操作は完了したので、コンテナを左クリックして「シャットダウン」をクリック
コンテナのテンプレート化
出来上がったコンテナをバックアップすることでテンプレートとして使いまわすことができるようになる
データセンター > ノード > 作成したコンテナ > バックアップを選択し、「今すぐバックアップ」をクリック
モードは「停止」、圧縮は「GZIP」にして、「バックアップ」をクリック
データセンター > ノード を選択し、「シェル」をクリック(SSHでノードにログインしてもOK)
/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
カスタマイズしたテンプレートからコンテナを作成
最初にコンテナを作成した手順と同じようにコンテナを作成する。
テンプレートの選択画面では、先ほどコピーしたファイルを選択する。
これで立ち上げるとパッケージもアップデートされ(先頭のバージョン表記が22.04.3になっている)、curl
もインストールされた状態のコンテナが作成できる。
コンテナのバックアップファイルは不要なので、削除してしまって問題ない。
その2:デフォルトで登録されていないテンプレートをベースにする
いっぽう、Proxmoxにデフォルトで登録されていないテンプレートをベースにしたい場合はどうするか?
この場合は、以下のURLからベースとなるテンプレートをダウンロードしてきたうえで、その1と同じようにカスタマイズしていく。
この場合、各階層にある rootfs.tar.xz
が対象になる。
このリンクをコピーして、「CTテンプレート」の「URLダウンロード」に入力する。
このあとの手順はその1と同じになる。
SSHサーバが導入されてない場合は、パッケージの追加導入のときにインストール&起動時にサービス開始するように設定しておけば、コンテナ作成時にSSHで待ち受けることができるようになる。
さいごに
もっとはやくテンプレート作成しとけばよかった