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
で設定を変更可能。
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が作成される。
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
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
Ubuntuだと、指定サイズのディスクが「追加」された。(この辺の仕組みはよくわからないが)
ちなみに作成直後だと10GBのままの表示になっている場合があるが、表示をリフレッシュすればちゃんと表示される。
共有フォルダ
こっちにも書いているけど再掲。
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を以下のように記述する
Vagrant.configure("2") do |config|
config.vm.hostname = "centos-dev01.localhost"
VirtualBoxマネージャ上のマシン名
この部分の名前を指定するには、Vagrantfileを以下のように記述する
Vagrant.configure("2") do |config|
# ...
config.vm.provider "virtualbox" do |vb|
vb.name = "ubuntu-dev01"
VMの説明
この部分のテキストを設定するためのVagrantfileの設定項目はないが、任意の引数を指定することができるcustomize
を使用し、VirtualBoxのChapter 8. VBoxManage / 8.8. VBoxManage modifyvm / 8.8.1. General Settingsの--description <desc>
を使用すれば設定できる。
(VMの数が10や20くらいになってくると)マシンの説明や固定IPアドレスを指定しておくと便利。
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の場合)
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
# -*- 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の指定以外は)同じです。