〆(.. )カリカリッ!! lxc-archlinuxがデフォルトではインターフェースにbr0を期待しているので・・・

lxcでarch linuxのテンプレートでも使おうと思って気付いたことは/usr/share/lxc/templates/lxc-archlinuxはbr0をインターフェースに期待していて、lxc-createコマンドの-fオプションに渡すconfigファイルに設定をしててもダメだということ。

こんなファイルを作っておいて、

masami@saga:~$ cat test.conf
lxc.network.link = virbr0

このファイルを読み込むように指定してもnetwork link interface does not existと怒られる(´・ω・`)

masami@saga:~$ sudo lxc-create -f ./test.conf -t /usr/share/lxc/templates/lxc-archlinux -n lxc-arch2 -- -P openssh,dhcpcd
network link interface does not exist
lxc-create: failed to execute template '/usr/share/lxc/templates/lxc-archlinux'
lxc-create: aborted

/usr/share/lxc/templates/lxc-archlinuxを覗いて見ると、以下のような設定がありbr0をデフォルトで使用するようになってます。

# defaults
 28 arch=$(uname -m)
 29 lxc_network_type="veth"
 30 lxc_network_link="br0"
 31 default_path="/var/lib/lxc"
 32 default_locale="en-US.UTF-8"
 33 default_timezone="UTC"
 34 pacman_config="/etc/pacman.conf"
 35

もうちょい見てみるとhelpの説明で-lオプションでlxc_network_linkに使うインタフェースを指定できることが分かります。

176 usage() {
177     cat <<EOF
178 usage:
179     ${1} -n|--name=<container_name>
180         [-P|--packages=<pkg1,pkg2,...>] [-p|--path=<path>] [-t|--network_type=<type>] [-l|--network_link=<link>] [-h|--help]
181 Mandatory args:
182   -n,--name         container name, used to as an identifier for that container from now on
183 Optional args:
184   -p,--path         path to where the container rootfs will be created, defaults to ${default_path}/rootfs. The container config will go under ${default_path} in that case
185   -P,--packages     preinstall additional packages, comma-separated list
186   -c,--config       use specified pacman config when installing container packages
187   -t,--network_type set container network interface type (${lxc_network_type})
188   -l,--network_link set network link device (${lxc_network_link})
189   -h,--help         print this help
190 EOF
191     return 0
192 }

ということで、-lオプションでvirbr0を渡すとインターフェースが無いとかで怒られずに先に進む。

masami@saga:~$ sudo lxc-create  -t /usr/share/lxc/templates/lxc-archlinux -n lxc-arch -- -P openssh,dhcpcd -l virbr0

lxc-create: No config file specified, using the default config /etc/lxc/default.conf
==> Creating install root at /var/lib/lxc/lxc-arch/rootfs
==> Installing packages to /var/lib/lxc/lxc-arch/rootfs
:: Synchronizing package databases...

注意点としては-lオプションはlxc-createコマンドのオプションではなくlxc-archlinuxコマンドのオプションなので--以降で-lを使う必要があります。