Error VT-x not available for Vagrant machine inside Virtualbox
You can only use one virtual CPU without VT-x. Thus, the error message stating that VT-x isn't enabled is caused by the following line:
vb.customize ["modifyvm", :id, "--cpus", "2"]
Replacing it with the following works (Vagrant has a shorthand for setting the CPU count):
vb.cpus = 1
NOTE: You can only run 32-bit VMs inside another VM.
UPDATED: As pointed out below, you can use nested VirtualBox + vagrant provided that only 1 virtual CPU is assigned to the nested VM, plus nested VM guest is 32-bit OS.
Vagrant in nested Virtual Box
First of all you can run definitely Vagrant inside a nested Virtual Box.
VT-X Support (related to VirtualBox)
Currently VirtualBox is not supporting nesting VT-X. There is currently a feature request pending(see.: https://www.virtualbox.org/ticket/4032) but as of now it is not expected to be in a new version of VirtualBox
Consequences from missing VT-X in nested VirtualBox
There are currently two consequences from nesting without VT-X:
- You cannot use multiple CPUs but you can use a single virtual cpu using
vb.cpus = 1
- You cannot run a 64-Bit VM within a nested VirtualBox.