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を使う必要があります。