書き残しです。気が付かなかったので。
KVM+libvirtを動かしているマシンをubuntu 14.04にアップグレードしてから、uvtool が利用できるようになったのでkvmでマシン作りたいときはこれで作ってます。
イメージがクラウドで利用されているのもの(Ubuntu Cloud Images)が手に入るので、一度必要なイメージをダウンロードしたら次はそれをリンクしてマシンを生成してくれるようで、OSのインストール作業というのが無いんです。非常に気が楽にマシンを作れます。
何かを試す程度ならいいんですが、ちょっと問題が
ネットワークがNATになってしまう
ubtoolのデフォルトのネットワークはvirbr0というインターフェースを指すようで(libvirtが自動で生成するインターフェース)、これはNATのようです。
何がまずいかというと、例えば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つの注意点も設定次第でなくせるかもしれません。