ページ ツリー
メタデータの末尾にスキップ
メタデータの先頭に移動

このページの古いバージョンを表示しています。現在のバージョンを表示します。

現在のバージョンとの相違点 ページ履歴を表示

« 前のバージョン バージョン 8 次のバージョン »

VirtualBox の VM を細かく設定する

VirtualBox の設定は virtualbox プロバイダの設定で行います。
VirtualBox プロバイダの customize メソッドは VirtualBox の VBoxManage コマンドを経由して、これから起動しようとしている VM のあらゆる設定を行います。

たとえば、メモリサイズを変更する場合は次のように書きます。

config.vm.provider :virtualbox do |vbox|
  vbox.customize ['modifyvm', :id '--memory', '4096']
end

VBoxManage コマンドの詳細は VirtualBox のドキュメント [ https://www.virtualbox.org/manual/ch08.html ] を確認してください。

 

メモリサイズや CPU コア数を設定する

仮想マシンの基本的なリソースもここで設定できます。 

config.vm.provider :virtualbox do |vbox|
  # メモリサイズ
  vbox.customize ['modifyvm', :id, '--memory', '4096']
 
  # CPU 利用率の制限
  vbox.customize ['modifyvm', :id, '--cpuexecutioncap', '80']
 
  # CPU コア数
  vbox.customize ['modifyvm', :id, '--cpus', '4']
 
  # CUP コア数を2以上にするのに必要
  vbox.customize ['modifyvm', :id, '--ioapic', 'on']
 
  # 64bit OS を使用するのに必要
  vbox.customize ['modifyvm', :id, '--hwvirtex', 'on']
end

※ ゲスト OS が WIndows の場合など、CPU コア数を変更できない場合もあります。

 

VirtualBox の環境設定をする

クリップボードや入力インタフェースも同じように設定できます。

config.vm.provider :virtualbox do |vbox|
  # クリップボード共有の設定
  vbox.customize ['modifyvm', :id, '--clipboard', 'bidirectional']
 
  # ドラッグアンドドロップの設定(双方向はまだサポートされていないらしい)
  vbox.customize ['modifyvm', :id, '--draganddrop', 'hosttoguest']
 
  # マウスの種類の選択
  vbox.customize ['modifyvm', :id, '--mouse', 'usbtablet']
 
  # キーボードの種類の選択
  vbox.customize ['modifyvm', :id, '--keyboard', 'usb']
end

 

起動ロゴを設定する

VIrtualBox は 640 * 480 の非圧縮ビットマップファイルを起動ロゴとして表示できます。
Vagrantfile と同じディレクトリに logo.bmp を置いた場合は、次のように記述します。 

config.vm.provider :virtualbox do |vbox|
  # 起動ロゴのファイルパス
  vbox.customize ['modifyvm', :id, '--bioslogoimagepath', "#{Dir::pwd}/logo.bmp"]
 
  # フェードインする
  vbox.customize ['modifyvm', :id, '--bioslogofadein', 'on']
 
  # フェードアウトする
  vbox.customize ['modifyvm', :id, '--bioslogofadeout', 'on']
 
  # 起動ロゴの表示時間
  vbox.customize ['modifyvm', :id, '--bioslogodisplaytime', '10000']
end

 

ネットワークを速くする

これ、実はネット上の情報では全く逆の設定で速くなったというものもあって、よくわかっていないです。
情報をもっている方がいたら、ぜひ教えてください。 

config.vm.provider :virtualbox do |vbox|
  vbox.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
  vbox.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
end

HIroki ITO さんに調べてもらいたい。

 

Vagrantfile の設定を外部ファイルで制御する

Vagrantfile は Git リポジトリでバージョン管理されるファイルです。
しかし、利用者ごとに異なるユーザー名やパスワードなどは Git リポジトリにコミットしたくないので、Vagrantfile に直接書くのは避けたいです。

.yml ファイルを読み込む

Vagrant プラグインは不要です。 Ruby 標準添付の yaml ライブラリだけで実現できます。

例えば、次の yml ファイルを読み込むには

config.yml
A: aaa
B:
  B1: bbb1
  B2: bbb2
C: ccc

Vagrantfile に以下のように記述します。

require 'yaml'
vm_config = YAML::load_file('config.yml')
 
vm_config['A'] == 'aaa'
vm_config['B']['B2'] == 'bbb2'

 

その他の方法

dotenv を Vagrant のプラグインとしてインストールしておき、.env ファイルに設定を書く方法や、vagrant-secret プラグインを利用する方法などがあるようです。

 

プラグインがインストールされているかチェックする

vagrant-omnibus などの必須プラグインがインストールされていない場合に、そのまま vagrant up を実行してしまうと Ruby のスタックトレースが表示され、vagrant up が失敗します。
スタックトレースを見ても、ユーザーはどうしてそれが失敗したのか判断できない場合が多いです。

必要なプラグインは事前にチェックできるように Vagrantfile に処理を書いておくとよいです。 

unless Vagrant.has_plugin?('vagrant-omnibus') then
  raise 'vagrant-omnibus プラグインがインストールされていません。'
end
  • ラベルがありません