LoginSignup
4
9

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-14

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の指定以外は)同じです。

4
9
0

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
  3. You can use dark theme
What you can do with signing up
4
9