VagrantのBoxを作成する
VagrantのBoxを作成してみました。 Windows8.1なのでHyper-Vでやろうかと思いましたが、少し試してみたところ上手くいかなかったのでおとなしくVirtualBoxを使っています。
https://docs.vagrantup.com/v2/boxes/base.html
https://docs.vagrantup.com/v2/virtualbox/boxes.html
仮想マシンの作成
VirtualBoxでマシンを新規に作成します。
ディスク
ディスクの種類はVDIでもVMDKでも良いようです。VDIで作成しても、Boxにした際に VMDKに変換されたので最初からVMDKが良いかも。 サイズ可変で最大サイズで作る、とありますが最大サイズがよくわからないので可変サイズで128GBくらいで。
メモリ
デフォルトを大きくしすぎないように、ということなので512MBで。
周辺機器
オーディオやUSBのような不要なハードウェアは無効化しておくように、とのこと。
OSのインストール
インストールのISOイメージをドライブにセットして起動。 Elementary OS (Luna 64bit)でやりました。
ユーザー設定
vagrantというユーザーを作成します。パスワードもvagrantです。 rootのパスワードもvagrantにしておくと良いようです。
ダミーの公開鍵 を
~/.ssh/authorized_keys
に追記しておきます。パーミッションは ~/.ssh
が 0700
、
~/.ssh/authorized_keys
が 0600
です。
パスワードなしでsudoできるようにしておきます。
$ sudo update-alternatives --config editor $ sudo visudo
以下の行を末尾に追記します。
vagrant ALL=(ALL) NOPASSWD: ALL
SSHサーバー導入
SSHサーバーをインストールします。
$ sudo apt-get install ssh sysv-rc-conf $ sudo sysv-rc-conf ssh on $ sudo sysv-rc-conf --list | grep ssh
VirtualBox Guest Additionsのインストール
追加プログラムをインストールします。
$ sudo apt-get install linux-headers-generic build-essential dkms $ sudo mkdir /media/cdrom $ sudo mount /dev/cdrom /media/cdrom $ sudo sh /media/cdrom/VBoxLinuxAdditions.run $ sudo reboot
後述しますが、これではインストールが正しく完了しておらず VirtualBox Guest Additionsを再セットアップする必要がありました。 念を入れてこのタイミングでやっておくと良いかなと思いました。
$ sudo /etc/init.d/vboxadd setup
Vagrant Boxの作成
ここからはゲストOSをシャットダウンして、ホストOSで作業します。
Boxの作成
{vm name}
はVirtualBoxでつけたマシンの名前です。
{/path/to/box}
は作成するBoxの出力先です。
-- vagrant package --base {vm name} --output {/path/to/box} $ vagrant package --base elementary-64 --output elementary-64.box
Boxの登録
{box name}
はBoxの登録名です。
-- vagrant box add {box name} {/path/to/box} $ vagrant box add elementary-64-minimal elementary-64.box $ vagrant box list
Boxからマシンを作成
適当なディレクトリを作成しBoxからマシンを作成します。
$ mkdir elem $ cd elem -- vagrant init {box name} $ vagrant init elementary-64-minimal
起動・停止
$ vagrant up $ vagrant halt
起動時にエラーが出る場合は、VirtualBox Guest Addtionsを再セットアップ
起動時に共有フォルダのマウントでエラーが出ました。
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:mount -t vboxsf -o uid=
id -u vagrant
,gid=getent group vagrant | cut -d: -f3
vagrant /vagrant
mount -t vboxsf -o uid=id -u vagrant
,gid=id -g vagrant
vagrant /vagrantThe error output from the last command was:
stdin: is not a tty
/sbin/mount.vboxsf: mounting failed with the error: No such device
ゲストOSに戻り、VirtualBox Guest Addtionsを再セットアップ、Boxの再作成を行うことで解決しました。
$ sudo /etc/init.d/vboxadd setup