はじめに
Vagrantfile内でのディスク追加の記述に苦労したのでメモ。
以下の環境で実行しました
- Vagrant 1.9.3
- VirtualBox 5.1.20
- ゲストはubuntu/xenial64
- ホストはWindows7
ディスク追加
Vagrantfile内で以下の記述を行います。
ストレージのサイズは今回は200GBです。
Vagrant.configure(2) do |config|
# 省略
config.vm.provider "virtualbox" do |vb|
disk_file = "./tmp/disk.vdi"
unless File.exists?(disk_file)
vb.customize ['createhd', '--filename', disk_file, '--format', 'VDI', '--size', 200 * 1024]
end
vb.customize ['storageattach', :id, '--storagectl', 'SCSI', '--port', 2, '--device', 0, '--type', 'hdd', '--medium', disk_file]
end
end
--storagectl
は'SATA'
や'SATA Controller'
といった記述をよく見ますが、上記構成では'SCSI'
でした。
調べる方法は以下を参照
http://qiita.com/kjtanaka/items/8f3e92e029e46f826754#%E8%A3%9C%E8%B6%B3
また、--port
は1
を指定しているのをよく見かけますが、上記構成では/dev/sdbはすでに使用されており、1
を指定してしまうと、タイムアウトしてしまう(ことのきエラー情報等の出力はないため結構はまります)ため2
を指定しています。デバイスファイルは/dev/sdcが使用されます。
その他、customize
のコマンドとオプションに関しては以下を参照して下さい。
https://www.virtualbox.org/manual/ch08.html
マウント
Vagrantfile内で以下のようにシェルを実行してマウント処理を行います
config.vm.provision "shell", path: "mount.sh"
GNU partedを用いてフォーマットを行い、マウントを実行します。
マウントポイントは今回は/optとしました。
#!/bin/bash -eux
apt-get -y install parted
parted /dev/sdc mklabel gpt
parted /dev/sdc mkpart primary ext4 0% 100%
mkfs.ext4 /dev/sdc1
mkdir -p /opt
mount /dev/sdc1 /opt
echo '/dev/sdc1 /opt ext4 defaults 0 0' >> /etc/fstab