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