| # -*- mode: ruby -*- |
| # vi: set ft=ruby : |
| |
| LINUX_BASE_BOX = "bento/ubuntu-16.04" |
| FREEBSD_BASE_BOX = "jen20/FreeBSD-12.0-CURRENT" |
| |
| Vagrant.configure(2) do |config| |
| if Vagrant.has_plugin?("vagrant-cachier") |
| config.cache.scope = :box |
| end |
| |
| # Compilation and development boxes |
| config.vm.define "linux", autostart: true, primary: true do |vmCfg| |
| vmCfg.vm.box = LINUX_BASE_BOX |
| vmCfg.vm.hostname = "linux" |
| vmCfg = configureProviders vmCfg, |
| cpus: suggestedCPUCores() |
| |
| vmCfg.vm.synced_folder ".", "/vagrant", disabled: true |
| vmCfg.vm.synced_folder '.', |
| '/opt/gopath/src/github.com/hashicorp/packer' |
| |
| vmCfg.vm.provision "shell", |
| privileged: true, |
| inline: 'rm -f /home/vagrant/linux.iso' |
| |
| vmCfg.vm.provision "shell", |
| privileged: true, |
| path: './scripts/vagrant-linux-priv-go.sh' |
| |
| vmCfg.vm.provision "shell", |
| privileged: true, |
| path: './scripts/vagrant-linux-priv-config.sh' |
| |
| vmCfg.vm.provision "shell", |
| privileged: false, |
| path: './scripts/vagrant-linux-unpriv-bootstrap.sh' |
| end |
| |
| config.vm.define "freebsd", autostart: false, primary: false do |vmCfg| |
| vmCfg.vm.box = FREEBSD_BASE_BOX |
| vmCfg.vm.hostname = "freebsd" |
| vmCfg = configureProviders vmCfg, |
| cpus: suggestedCPUCores() |
| |
| vmCfg.vm.synced_folder ".", "/vagrant", disabled: true |
| vmCfg.vm.synced_folder '.', |
| '/opt/gopath/src/github.com/hashicorp/packer', |
| type: "nfs", |
| bsd__nfs_options: ['noatime'] |
| |
| vmCfg.vm.provision "shell", |
| privileged: true, |
| path: './scripts/vagrant-freebsd-priv-config.sh' |
| |
| vmCfg.vm.provision "shell", |
| privileged: false, |
| path: './scripts/vagrant-freebsd-unpriv-bootstrap.sh' |
| end |
| end |
| |
| def configureProviders(vmCfg, cpus: "2", memory: "2048") |
| vmCfg.vm.provider "virtualbox" do |v| |
| v.memory = memory |
| v.cpus = cpus |
| end |
| |
| ["vmware_fusion", "vmware_workstation"].each do |p| |
| vmCfg.vm.provider p do |v| |
| v.enable_vmrun_ip_lookup = false |
| v.vmx["memsize"] = memory |
| v.vmx["numvcpus"] = cpus |
| end |
| end |
| |
| vmCfg.vm.provider "docker" do |d, override| |
| d.build_dir = "." |
| d.has_ssh = true |
| override.vm.box = nil |
| end |
| |
| return vmCfg |
| end |
| |
| def suggestedCPUCores() |
| case RbConfig::CONFIG['host_os'] |
| when /darwin/ |
| Integer(`sysctl -n hw.ncpu`) / 2 |
| when /linux/ |
| Integer(`cat /proc/cpuinfo | grep processor | wc -l`) / 2 |
| else |
| 2 |
| end |
| end |