目的
仕事でVagrantを使う場合、インターネット上に落ちているboxは何がインストールされているか分からないから不安が付きまといます。
そのため、ここではVirtual Boxで一から仮想マシンを作成し、作成した仮想マシンのboxを作成し、Vagrantで使用出来るようにします。
なお、開発環境で使用する目的のため、セキュリティは一切無視します。
作成する仮想OSの仕様
作成する仮想OSの仕様を以下に記述します。
ハードウェア構成
- 仮想CPU数は1つ
- メモリ数は1GB
- ディスク容量は500GB(可変)
- ネットワークアダプタはNATで1つ
ソフトウェア仕様
- OSはCentOS Linux7
- インストールタイプはミディアム
- 日付と時刻はアジア/東京
- 言語サポートは日本
- キーボードは日本語
- パーティション構成は自動
- SELinuxはオフ
- yumで最新にしておく
- sudoを使えるようにしておく
- ssh設定
- firewallをオフにする
まずはインストール
OSはhttp://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7/isos/x86_64/から取得します。
SELinuxをオフにする
/etc/selinux/config(変更箇所のみ)
SELINUX=disabled
yumで最新にしておく
あえて書く必要はないかも知れませんが。
アップデートが終わったらシャットダウンします。
$ yum update
$ shutdown -h now
sudoを使えるようにしておく
visudo
$ visudo
#Defaults requiretty ← コメントにする
%vagrant ALL=(ALL) NOPASSWD:ALL ←追加
注:これをやらないと「sudo を実行するには tty がなければいけません。すみません」のエラーが出ます。
ssh設定
$ su - vagrant
$ mkdir .ssh
$ curl https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > .ssh/authorized_keys
firewallをオフに
$ su -
$ systemctl stop firewalld
$ systemctl disable firewalld
vagrantのパッケージ作成
ここからやっとvagrantのパッケージ作成
packageコマンドの書式
vagrant package --base [VM名] --output [出力box名]
--outputオプションをつけなかったら、package.boxというファイル名になります。
実行例
$ vagrant package --base "CentOS7" --output CentOS7.box
Vagrantに作成したboxを追加する
addコマンドの書式
vagrant box add [VM名] [box名]
実行例
$ vagrant box add centos7 CentOS7.box
確認
$ vagrant box list
centos7 (virtualbox, 0)
以上で完成です。
作成したboxファイルはこちらにあります
仮想OSをマウントするとエラーが出る
仮想OSを起動すると、
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 /vagrant
The error output from the last command was:
mount: unknown filesystem type 'vboxsf'