LXD環境を作る為の忘備録
今月号の日経Linuxに特集があったのにも触発されてちょっとちゃんとセットアップしてみた
WebUIとしてLXDMosaicとLXDWAREのLXD-Dashboardに対応
LXD
LXDのセットアップ
lxd initの項目については基本的にすべてデフォルトでも問題なし
※今回LXDのホストのIPは以降192.168.0.242として説明
$ sudo snap install lxd
$ lxd init
ブリッジ設定
LXDホスト機の外部からコンテナやVMにアクセスできるようにする(本例では192.168.0.0/24系)
$ sudo apt update && sudo apt install -y bridge-utils
netplanの作成
※Ubuntu22.04から一部gateway4が使えなくなったのでroutes書式を使用
※ens32の部分(二か所はip aコマンドなどで自分の環境のNICと合わせる)
network:
ethernets:
ens32:
dhcp4: false
dhcp6: false
accept-ra: false
bridges:
br0:
interfaces: [ens32]
addresses: [192.168.0.242/24]
routes:
- to: default
via: 192.168.0.1
link-local: []
nameservers:
addresses: [192.168.0.1]
parameters:
forward-delay: 0
stp: no
optional: true
version: 2
$ sudo netplan apply
$ lxc profile create bridge
$ lxc network attach-profile br0 bridge eth0
$ lxc profile device add bridge root disk path=/ pool=default
LXDMosaic
LXDMosaicのセットアップ
LXDMosaicコンテナからLXDホストへ繋ぐ為の認証設定
下記some-secret-stringには任意のパスワードを設定
$ lxc config set core.https_address [::]
$ lxc config set core.trust_password some-secret-string
LXDMosaic用のコンテナを生成
※PHPバージョンの依存関係の問題により22.04ではなく20.04を選択
$ lxc launch ubuntu:20.04 LXDMosaic --profile=bridge
$ lxc exec LXDMosaic bash
ここからLXDMosaicコンテナ内の操作
一旦上記のブリッジが正しく動作しているか確認する為現在のIPを取得
# ip a
IPv6の無効化
ここで割り振られてしまっているIPv6のアドレスが後々邪魔になるようなので予め無効化
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
sudo systemctl restart procps
#!/bin/bash
systemctl restart procps
exit 0
$ sudo chmod 755 /etc/rc.local
$ sudo systemctl reboot
rebootするとコンテナが切断されるので入り直してから以降の作業を行う
インストールが終わるとターミナル内に管理画面のアドレスが表示されるのでそれにアクセスする
※今回LXDMosaicコンテナは192.168.0.111とする
$ lxc exec lxdMosaic bash
# curl https://raw.githubusercontent.com/turtle0x1/LxdMosaic/master/examples/install_with_clone.sh >> installLxdMosaic.sh
# chmod +x installLxdMosaic.sh
# ./installLxdMosaic.sh
ここではLXDMosaicのコンテナから見てLXDが動いているホストを指定する
Trust Passwordには上記のsome-secret-stringに入力したパスワードを指定する
こちらにはWeb管理画面のアカウント情報を登録するパスワードはsome-secret-stringのパスワードとは別で可
LXDWAREのLXD Dashboard
LXD Dashboard用のコンテナを生成
※こちらはUbuntu22.04を使用
※LXDWAREの方はIPv6問題は特にないのでその対応は不要、コンテナのIPだけ確認(こちらは192.168.0.169)
※公式ドキュメントでは3.4.0で書かれているけれど最新でも問題なさそうなので3.6.0を指定
$ lxc launch ubuntu:22.04 LXDDashboard --profile=bridge
$ lxc exec LXDDashboard bash
# ip a
# apt update && apt install wget nginx php-fpm php-curl sqlite3 php-sqlite3 -y
# wget https://github.com/lxdware/lxd-dashboard/archive/v3.6.0.tar.gz
# tar -xzf v3.6.0.tar.gz
# cp -a lxd-dashboard-3.6.0/default /etc/nginx/sites-available/
# cp -a lxd-dashboard-3.6.0/lxd-dashboard /var/www/html/
PHPバージョン指定を7系から8系に変更
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html/lxd-dashboard;
index index.php index.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
#include snippets/fastcgi-php.conf;
#fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
- fastcgi_pass unix:/run/php/php7.4-fpm.sock;
- #fastcgi_pass unix:/run/php/php8.1-fpm.sock;
+ #fastcgi_pass unix:/run/php/php7.4-fpm.sock;
+ fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
}
# mkdir -p /var/lxdware/data/sqlite
# mkdir -p /var/lxdware/data/lxd
# mkdir -p /var/lxdware/backups
# chown -R www-data:www-data /var/lxdware/
# chown -R www-data:www-data /var/www/html
# systemctl restart nginx
# exit
セットアップ完了後にコンテナのIPにアクセス
Web画面の管理ユーザーを登録
ログイン
LXDのホストが登録されていないので追加
下画面に書いてあるように例えばホームディレクトリにlxdware.crtという名前のファイルを作り内容に
-----BEGIN CERTIFICATE-----
~
-----END CERTIFICATE-----
の内容をコピーする
そののち以下のコマンドで証明書を取り込む
$ lxc config trust add lxdware.crt
$ lxc config set core.https_address [::] の方は上記でもやったのでやってない場合のみ行う
LXDホストと接続する
ちなみにRedHat系だとデフォルトではlxcコマンドを一般ユーザー権限で実行できないのでグループ追加が必要
$ sudo usermod -aG lxd username
参考記事など
Ubuntu 20.04LTSでブリッジ接続を作成する
LXDでブリッジ接続する方法(Ubuntu20.04)
UbuntuでIPv6を無効にする
LXD で作る仮想化 GUI 環境 - Ubuntu 22.04 LTS 版