This is a Vagrant plugin which enable FreeBSD's hypervisor bhyve as its backend.
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 |
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 |
$ 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.
Thanks to Steve Wills's work, now you can convert a VirtualBox box to a bhyve one with vagrant-mutate.
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
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
This command will shutdown the booted VM and clean up environment
$ /path/to/vagrant-bhyve/bin/vagrant halt
$ /path/to/vagrant-bhyve/vagrant destroy
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
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
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
Bug reports and pull requests are welcome on GitHub at https://github.com/jesa7955/vagrant-bhyve.
MIT