uvtoolのネットワークをブリッジ接続させる


書き残しです。気が付かなかったので。

KVM+libvirtを動かしているマシンをubuntu 14.04にアップグレードしてから、uvtool が利用できるようになったのでkvmでマシン作りたいときはこれで作ってます。

イメージがクラウドで利用されているのもの(Ubuntu Cloud Images)が手に入るので、一度必要なイメージをダウンロードしたら次はそれをリンクしてマシンを生成してくれるようで、OSのインストール作業というのが無いんです。非常に気が楽にマシンを作れます。

何かを試す程度ならいいんですが、ちょっと問題が

ネットワークがNATになってしまう

ubtoolのデフォルトのネットワークはvirbr0というインターフェースを指すようで(libvirtが自動で生成するインターフェース)、これはNATのようです。

libvirt: Wiki: Networking

何がまずいかというと、例えばGitlab試したい!とかDocker試したい!とかで必要なサービスへアクセスさせようとした時に、NAT超えする設定を書く必要があるから。

ブリッジで出せるといいなあと思ってました。できるのかな?と思ってたのですが出来ましたのでメモ書き。

--bridgeオプションを使う

uvt-kvm create example-bridge release=trusty --bridge br0 --package avahi-daemon

これはlibvirt側のオプションです。uvtoolはlibvirtのオプションも使えるんですね。

何も引数を渡さないでuvt-kvm createを使うとuvtoolが定義しているテンプレート(libvirt側に登録させるxml)が使われますが、オプションを使うと上書きして登録してくれるようです。

それでホストのブリッジインターフェースを使って同一ネットワークに出すことは出来ましたが、それだけではIPを探しに行く必要があるので、--package avahi-daemonを入れてホスト名でアクセスできるようにしました。

これには2つの注意点があって

  • ホスト名を変更した場合はそれを使うこと。デフォルトではマシン名がホスト名になるはずです
  • uvtoolを利用するときに作成した秘密鍵が無いとアクセス出来ない。sshで見に行く時は-iオプションが必要
  • なおユーザー名はubuntu

なお、ここで利用できるイメージはクラウド向けのイメージで、Cloud-Initという、クラウド向けに設定を上書きできるツールが同梱されていて利用できるそうです。なので2つの注意点も設定次第でなくせるかもしれません。

参考