andreychernih/railsbox

View on GitHub
templates/environment/virtualbox/_virtualbox_config.erb

Summary

Maintainability
Test Coverage
  config.vm.provider :virtualbox do |vb, override|
    <% if params[:autoconf] -%>
    host = RbConfig::CONFIG["host_os"]

    if host =~ /darwin/ # OS X
      # sysctl returns bytes, convert to MB
      vb.memory = `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 3
      vb.cpus = `sysctl -n hw.ncpu`.to_i
    elsif host =~ /linux/ # Linux
      # meminfo returns kilobytes, convert to MB
      vb.memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
      vb.cpus = `nproc`.to_i
    end
    <% else %>
    vb.memory = <%= params[:vm_memory] %>
    vb.cpus = <%= params[:vm_cores] %>
    <% end %>

    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end

  config.vm.define '<%= params[:vm_name] %>' do |machine|
    machine.vm.hostname = '<%= params[:server_name] %>'
    <% params[:vm_ports].each_value do |port| -%>
    machine.vm.network 'forwarded_port', :guest => <%= port[:guest] %>, :host => <%= port[:host] %>, :auto_correct => true
    <% end %>

    machine.vm.box = '<%= params[:vm_os] %>'

    machine.vm.network 'private_network', ip: '<%= params[:vm_ip] %>'
    machine.vm.synced_folder '../../', '<%= params[:path] %>'<%= vm_share_type_param %>
    machine.vm.synced_folder '../ansible', '/ansible'<%= vm_share_type_param %>
    <% if params[:vm_share_type] == 'nfs' -%>
    machine.bindfs.bind_folder '/<%= params[:path] %>', '/<%= params[:path] %>'
    machine.bindfs.bind_folder '/ansible', '/ansible'
    <% end %>
  end