LoginSignup
6

More than 3 years have passed since last update.

Organization

Vagrantで作成するVMのスペック等の設定(cpu/memory/storageほか)

Vagrantを使ったVirtualBoxへのVM構築 - Qiita

ここで書いていた内容の「残件」
特に指定なしでVagrantを使ってVMを作ると、vCPU:1/memory:512MB/Storage:10GBでVMが作成されるが、開発・検証用とで不足の場合は、各パラメタはVagrantfileでも設定できる。

環境

  • ホストOS: Windows 10 Home (x64)
  • ハイパーバイザ: VirtualBox 5.2.26
  • Vagrant: v2.2.4

CPUとMemory

ここではVirtualBoxの場合
それ以外のHypervisorの場合は、ドキュメント参照

VirtualBoxプロバイダの設定で指定できるので、セットで指定するのが良い。
(ちなみにCPU数はcpu(sつけ忘れ)と数か月見間違え続けて指定方法がずっとわからなかった…)

以下の設定で、2CPU・RAM2048GBでVMができる。
作成済みVMの場合はvagrant reloadで設定を変更可能。

Vagrantfile
  config.vm.provider "virtualbox" do |vb|
    vb.cpus = 2
    vb.memory = 2048
  end

Storage

実はストレージはデフォルトでは指定できないため、Vagrantのプラグインを追加する必要がある。

参考: Vagratfileに一行書くだけでVMのディスク容量を増やす方法 - Qiita

プラグインの確認

C:\Users\zaki\src\vagrant\sample>vagrant plugin list
No plugins installed.

リストに表示されなければインストールが必要

vagrant-disksizeプラグインのインストール

C:\Users\zaki\src\vagrant\sample>vagrant plugin install vagrant-disksize
Installing the 'vagrant-disksize' plugin. This can take a few minutes...
Fetching: vagrant-disksize-0.1.3.gem (100%)
Installed the plugin 'vagrant-disksize (0.1.3)'!

C:\Users\zaki\src\vagrant\sample>vagrant plugin list
vagrant-disksize (0.1.3, global)

C:\Users\zaki\src\vagrant\sample>

Vagrantfileの指定

デフォルト10GBのストレージは、以下の設定で任意のサイズでVMが作成される。

Vagrantfile
Vagrant.configure("2") do |config|
  # ...

  config.disksize.size = '40GB'

  # ...

CentOS 7.6

[vagrant@centos-dev01 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        40G  3.3G   37G   9% /
devtmpfs        912M     0  912M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M   17M  903M   2% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs           184M     0  184M   0% /run/user/1000

image.png

CentOSはメインのディスクが指定サイズのものとなる。

Ubuntu 18.04

vagrant@ubuntu-dev01:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            985M     0  985M   0% /dev
tmpfs           200M  624K  199M   1% /run
/dev/sda1        39G  1.4G   38G   4% /
tmpfs           997M     0  997M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup
vagrant         476G  242G  235G  51% /vagrant
tmpfs           200M     0  200M   0% /run/user/1000

image.png

Ubuntuだと、指定サイズのディスクが「追加」された。(この辺の仕組みはよくわからないが)
ちなみに作成直後だと10GBのままの表示になっている場合があるが、表示をリフレッシュすればちゃんと表示される。

共有フォルダ

こっちにも書いているけど再掲。

Vagrantfile

設定だけなら以下の通り

Vagrantfile
Vagrant.configure("2") do |config|

  # [...]

  config.vm.synced_folder "~/src", "/share", mount_options: ['dmode=755', 'fmode=644']

この設定で、「ホストOSの~/src(Windowsであれば%USERPROFILE%/src)」が、「ゲストOSの/share」にマウントされ、モード設定はディレクトリは755ファイルは644となる。

プラグイン

ストレージと同様にプラグインを入れる必要がある(かもしれない)。

zaki@mascarpone% vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.18.0)'!
zaki@mascarpone% vagrant plugin list
vagrant-disksize (0.1.3, global)
vagrant-vbguest (0.18.0, global)

VMの名前

いくつかはこっちにも書いてるけど再掲

ゲストOS上のhostname

ゲストOS上で

[vagrant@centos-dev01 ~]$ hostname
centos-dev01.localhost

という状態にするには、Vagrantfileを以下のように記述する

Vagrantfile
Vagrant.configure("2") do |config|

  config.vm.hostname = "centos-dev01.localhost"

VirtualBoxマネージャ上のマシン名

image.png

この部分の名前を指定するには、Vagrantfileを以下のように記述する

Vagrantfile
Vagrant.configure("2") do |config|

  # ...

  config.vm.provider "virtualbox" do |vb|
    vb.name = "ubuntu-dev01"

VMの説明

image.png

この部分のテキストを設定するためのVagrantfileの設定項目はないが、任意の引数を指定することができるcustomizeを使用し、VirtualBoxのChapter 8. VBoxManage / 8.8. VBoxManage modifyvm / 8.8.1. General Settings--description <desc>を使用すれば設定できる。
(VMの数が10や20くらいになってくると)マシンの説明や固定IPアドレスを指定しておくと便利。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, '--description', 'develop for ubuntu (52)']

ちなみに、Vagrant 2.2.4 / VirtualBox 5.2.26の環境では、日本語は文字化けして使えなかった。

ネットワーク

ホストオンリーアダプタの追加

こちらにも書いてるけど再掲

デフォルトだとNAT用のインタフェースのみで、ホストOSと自由な疎通はできない。
ホストOS間との経路を作成するには、追加でホストオンリーアダプタのNICを追加すれば良い

追加するには以下の通り。(static ipaddress設定で、192.168.244.51の場合)

Vagrantfile
Vagrant.configure("2") do |config|

  config.vm.network "private_network", ip: "192.168.244.51"

Private Networks - Networking - Vagrant by HashiCorp

その他

何かあれば追記…予定…

  • VM作成時にファイルをホストOSからput/copyする
  • 固定のssh秘密鍵設定

などは、Ansible検証環境に特化したVagrantを使ったVM構築 - 複数VM・VM間ssh公開鍵認証設定・共有フォルダにも記載

全部入りsanple Vagrantfile

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"

  config.vm.network "private_network", ip: "192.168.244.51"
  config.vm.hostname = "centos-dev01.localhost"
  config.disksize.size = '40GB'

  config.vm.synced_folder "~/src", "/share", mount_options: ['dmode=755', 'fmode=644']

  config.vm.provider "virtualbox" do |vb|
    vb.name = "centos-dev01"

    vb.cpus = 2
    vb.memory = 2048
    vb.customize ["modifyvm", :id, '--description', 'develop for centos (51)']
  end
end

Ubuntuも(boxの指定以外は)同じです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6