やること
- Ubuntu 16.04(固定IP)
- KVM(ブリッジ接続)
- LXD(ブリッジ接続・固定IP)
インストール
UEFIの場合、事前にパーティションを切る。KVM上で試すときにUEFIの場合はEFI/ubuntu/grubx64.efiをEFI/BOOT/BOOTX64.EFIへコピー。
ホスト名は最初から設定し、ユーザーはとりあえずtestユーザーを作る。
ディレクトリーを英語化
$ LANG=C xdg-user-dirs-gtk-update
NetworkManagerを無効化
# NetworkManagerが起動しないようにコメントアウトする
$ sudo nano /etc/init/network-manager.conf
# start on (local-filesystems
# and started dbus
# and static-network-up)
IPアドレスを固定
この手順を飛ばしてブリッジを作成しても構いません。
# イーサネットのデバイス名を調べる(下記の<xxx>)
$ ip a
# ネットワーク設定を変更
$ sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto <xxx>
iface <xxx> inet static
address 192.168.1.<nnn>
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
# 再起動
$ sudo shutdown -r now
ブリッジを作成
# 仮想ブリッジを作るためにbridge-utilsをインストール
$ sudo apt-get install -y bridge-utils
# イーサネットのデバイス名を調べる(下記の<xxx>)
$ ip a
# ネットワーク設定を変更
$ sudo nano /etc/network/interfaces
auto lo br0
iface lo inet loopback
iface <xxx> inet manual
iface br0 inet static
address 192.168.1.<nnn>
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
bridge_ports xxx
# 再起動
$ sudo shutdown -r now
NetworkManagerを削除
$ sudo apt-get purge -y network-manager
KVMをインストール
# 各種パッケージのインストール
$ sudo apt-get install -y qemu-kvm libvirt-bin virt-manager ovmf
# 操作したいユーザーをlibvirtdグループに追加
$ sudo gpasswd -a <user> libvirtd
# 再起動
$ sudo shutdown -r now
# libvirt-binの状況を確認
$ sudo /etc/init.d/libvirt-bin status
KVMを管理
# 基本的にvirt-manager(仮想マシンマネージャー)で操作するがUUIDを変えたい場合
# 仮想マシンの一覧を確認
$ sudo virsh list --all
# 仮想マシンの設定(XML)をダンプ
$ sudo virsh dumpxml xxx > domain.xml
# 仮想マシンを管理対象から外す
$ sudo virsh undefine xxx
# XMLを直接編集してUUIDを変更
$ sudo nano domain.xml
# XMLを登録
$ sudo virsh define domain.xml
LXDをインストール
# バックポート版をインストール
$ sudo apt-get install -y -t xenial-backports lxd
# 初期設定
$ sudo lxd init
# ブリッジを構成
$ sudo lxc profile device set default eth0 parent br0
LXDを管理
# コンテナを作成
$ sudo lxc init ubuntu:16.04 <container>
# コンテナを起動
$ sudo lxc start <container>
# コンテナの一覧を確認
$ sudo lxc list
# IPアドレスを固定
$ sudo lxc exec <container> -- sh -c 'echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg'
$ sudo lxc exec <container> -- cat /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
$ address='192.168.1.<nnn>' &&
$ netmask='255.255.255.0' &&
$ gateway='192.168.1.1' &&
$ dns_nameservers='192.168.1.1' &&
$ cfg="auto lo\niface lo inet loopback\n\nauto eth0\niface eth0 inet static\n\taddress $address\n\tnetmask $netmask\n\tgateway $gateway\n\tdns-nameservers $dns_nameservers" &&
$ sudo lxc exec <container> -- sh -c "echo '$cfg' > /etc/network/interfaces.d/50-cloud-init.cfg"
$ sudo lxc exec <container> -- cat /etc/network/interfaces.d/50-cloud-init.cfg
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.<nnn>
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
# コンテナの中に入る
$ sudo lxc exec <container> bash
# コンテナの中から出る
# exit
# コンテナを停止
$ sudo lxc stop <container>
# コンテナを削除
$ sudo lxc delete <container>