vagrant-persistent-storage

0.0.51last stable release 3 months ago
Complexity Score
Low
Open Issues
N/A
Dependent Projects
0
Weekly Downloadsglobal
14

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

Vagrant::Persistent-Storage

A Vagrant plugin that creates a persistent storage and attaches it to guest machine.

Requires Virtualbox 5/6

Installation

$ vagrant plugin install vagrant-persistent-storage

Usage

After installing you can set the location and size of the persistent storage.

The following options will create a persistent storage with 5000 MB, named mysql, mounted on /var/lib/mysql, in a volume group called ‘myvolgroup’

config.persistent_storage.enabled = true
config.persistent_storage.location = "~/development/sourcehdd.vdi"
config.persistent_storage.size = 5000
config.persistent_storage.mountname = 'mysql'
config.persistent_storage.filesystem = 'ext4'
config.persistent_storage.mountpoint = '/var/lib/mysql'
config.persistent_storage.volgroupname = 'myvolgroup'

With config.persistent_storage.mountoptions you can change the mount options (default: defaults). An example which sets prjquota option with xfs.

config.persistent_storage.mountname    = 'xfs'
config.persistent_storage.filesystem   = 'xfs'
config.persistent_storage.mountpoint   = '/mnt/xfs'
config.persistent_storage.mountoptions = ['defaults', 'prjquota']

Device defaults to /dev/sdb. For boxes with multiple disks, make sure you increment the drive:

config.persistent_storage.diskdevice = '/dev/sdc'

If you are using LVM and you would prefer to use the disk rather than a partition, you can set the following configuration:

config.persistent_storage.partition = false

When you expect a lot of writes in the disk (the case for /home mountpoints) it is recommended to change the disk variant to Fixed (fixed allocation) instead of the default Standard (dyanamic allocation). The tested types are Standard (default) and Fixed.

config.persistent_storage.variant    = 'Fixed'

If you want to pass a list of options to the underlying VboxManage storageattach call, you can use the config.persistent_storage.attachoptions option. For instance, if you want to enable TRIM support:

config.persistent_storage.mountoptions = ['defaults', 'discard']
config.persistent_storage.attachoptions = ['--discard', 'on']

Every vagrant up will attach this file as hard disk to the guest machine. A vagrant destroy will detach the storage to avoid deletion of the storage by vagrant. A vagrant destroy generally destroys all attached drives. See VBoxManage unregistervm –delete option.

The disk is initialized and added to it’s own volume group as specfied in the config; this defaults to ‘vagrant’. An ext4 filesystem is created and the disk mounted appropriately, with entries added to fstab … subsequent runs will mount this disk with the options specified.

Windows Guests

Windows Guests must use the WinRM communicator by setting vm.communicator = 'winrm'. An additional option is provided to allow you to set the drive letter using:

config.persistent_storage.drive_letter = 'Z'

Options that are irrelevent to Windows are ignored, such as mountname, filesystem, mountpoint and volgroupname.

How Is The Storage Created?

Based on the configuration provided, during a vagrant up a bash script is generated and uploaded to $tmpdir/disk_operations_#{mnt_name}.sh (Linux) or disk_operations_#{mnt_name}.ps1 (Windows). If the box has not been previously provisioned the script is executed on a vagrant up. To force the script to be executed again you can run vagrant provision or if you have halted the box, vagrant up --provision.

The outcome of the script being run is placed in the home drive of the vagrant user in a file called disk_operation_log.txt.

Optional settings

config.persistent_storage.part_type_code = '82'

Troubleshooting

If your box is not using LVM you must set config.persistent_storage.use_lvm = false.

Supported Providers

  • Only the VirtualBox provider is supported.

Contributors

  • madAndroid
  • Jeremiah Snapp
  • Hiroya Ito
  • joshuata
  • Ciprian Zaharie
  • aishahalim
  • Dick Tang
  • dsmaher
  • Marsup
  • k2s
  • vvavrychuk
  • Lars Hupfeldt Nielsen
  • Chen Yu Pao
  • Kris Reese
  • Henry N.
  • fredleger
  • Sebastian Wendel
  • Ben Phegan
  • Philipp Schrader
  • Alex Tomkins
  • Marcin Wolny
  • Adam Huffman
  • caio2k
  • Francesco
  • Dimitris Aragiorgis
  • Symaxion
  • Alex Pyrgiotis
  • qdetweiler
  • Jacob Christensen
  • roccotigger

TODO

  • There’s Always Something to Do
  • Add more options (controller, port, etc.)

Dependencies

No runtime dependency information found for this package.

CVE IssuesActive
0
Scorecards Score
4.00
Test Coverage
No Data
Follows Semver
Yes
Github Stars
292
Dependenciestotal
2
DependenciesOutdated
0
DependenciesDeprecated
0
Threat Modelling
No Data
Repo Audits
No Data

Learn how to distribute vagrant-persistent-storage in your own private RubyGems registry

gem install vagrant-persistent-storage
Processing...
Done

49 Releases

RubyGems on Cloudsmith

Getting started with RubyGems on Cloudsmith is fast and easy.