vagrant-bhyve
This is a Vagrant plugin which enable FreeBSD's hypervisor bhyve as its backend.
- Status
- Functions
- Boxes
- Test
- Setup environment
- Create a box
- Add the box
- Run the box
- SSH into the box
- Shutdown the box and cleanup
- Known Issues
- Installation
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"
endthen 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 = :freebsdto 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-sshfsto 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