Skip to content

Vagrant plugin which enables bhyve as a backend(Developing)

License

Notifications You must be signed in to change notification settings

network-shark/vagrant-bhyve

 
 

Repository files navigation

vagrant-bhyve

This is a Vagrant plugin which enable FreeBSD's hypervisor bhyve as its backend.

Status

Functions

Function Status
Box format Defined
Check bhyve support Working
Cloning Working(needs gcp package to copy image)
Booting(BIOS) Working
Network Working(needs pf and dnsmasq to provider NAT and DHCP)
SSH/SSH run Working(SSH run may needs bash)
Graceful shutdown Working
ACPI shutdown Working
Destroying Working
Provision Working
File sharing Working(NFS and vagrant-sshfs, maybe switch to VirtFS in the future)
Booting(UEFI) Not working
Port forwarding Not working
Suspend Not supported by bhyve yet
Resume Not supported by bhyve yet

Boxes

Collecting status of boxes from Atlas other than those provided by FreeBSD

Function Status
ubuntu/trusty64 Working
laravel/homestead Untested
hashicorp/precise64 Untested
hashicorp/precise32 Untested
centos/7 Working
puphpet/ubuntu1404-x64 Untested
ubuntu/trusty32 Untested
puphpet/debian75-x64 Untested
debian/jessie64 Working
scotch/box Untested
centos/6 Working

Test

Setup environment

$ git clone https://github.com/jesa7955/vagrant-bhyve.git
$ cd vagrant-bhyve
$ bundle install --path vendor/bundle --binstubs

Note we will need package coreutils and dnsmasq(and of course we will need grub-bhyve to boot Linux box), vagrant-bhyve will try to install them with pkg.

Create a box

Thanks to Steve Wills's work, now you can convert a VirtualBox box to a bhyve one with vagrant-mutate.

Run the box

After a box is created, you should create another Vagrantfile.

Vagrant.configure("2") do |config|
  config.vm.box = "boxname"
end

then execute this command to start the box with bhyve

$ /path/to/vagrant-bhyve/bin/vagrant up --provider=bhyve

SSH into the box

After the box is booted(uped), you can ssh into by executing this command. Note that you will have to use password to authorize for now.

$ /path/to/vagrant-bhyve/bin/vagrant ssh

Shutdown the box and cleanup

This command will shutdown the booted VM and clean up environment

$ /path/to/vagrant-bhyve/bin/vagrant halt

Destroy the box

$ /path/to/vagrant-bhyve/vagrant destroy

Known Issues

FreeBSD can't be shutdown gracefully

This issue seems like a bug of Vagrant core. It even appears when I test with virtualbox provider. The are two know solutions:

  • Add config.vm.guest = :freebsd to Vagrantfile
  • Add config.ssh.shell = "sh" to Vagrantfile

Synced folder is not working correctlly

I met this issue when I try to use vagrant-bhyve to boot centos/7 box. Vagrant uses NFS as default synced folder type. When it fails on your machine and box, you can:

  • Add config.vm.synced_folder ".", "/vagrant", type: "rsync" to your Vagrantfile to ensure that rsync type is used. Vagrant core will raise an error to inform you when there is not rsync find in PATH
  • Run vagrant plugin install vagrant-sshfs to enable vagrant-sshfs

Installation

Now this gem has been published on rubygems.org. You can install it through vagrant plugin install vagrant-bhyve to install it in a normal Vagrant environment

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/jesa7955/vagrant-bhyve.

License

MIT

About

Vagrant plugin which enables bhyve as a backend(Developing)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%