network-programmingconfigurationvagrant

How do I increase the RAM and set up host-only networking in Vagrant?


I would like to increase the RAM to at least 1 GB and I would like to configure “Host-Only” networking to use "199.188.44.20".

This is my Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|

    config.vm.customize ["modifyvm", :id, "--memory", 1024]

    config.vm.network :hostonly, "199.188.44.20"

    config.vm.define :web do |web_config|
        web_config.vm.box = "lucid32"
        web_config.vm.forward_port 80, 8080

        web_config.vm.provision :puppet do |puppet|
            puppet.manifests_path = "manifests"
            puppet.manifest_file = "lucid32.pp"
        end
    end

    config.vm.define :web2 do |web2_config| 
        web2_config.vm.box = "lucid32"
        web2_config.vm.forward_port 80, 8081

        web2_config.vm.provision :puppet do |puppet|
            puppet.manifests_path = "manifests"
            puppet.manifest_file = "myweb.pp"
        end
    end
end

However, when I run vagrant up I am getting:

The VM failed to remain in the "running" state while attempting to boot. This is normally cause by a misconfiguration or host system incompatibles. Please open the VirtualBox GUI and attempt to boot the virtual machine manually to get more informative error message

And, I am getting a connection refuse error when I try to log in to the VM.


Solution

  • You can modify various VM properties by adding the following configuration (see the Vagrant docs for a bit more info):

      # Configure VM Ram usage
      config.vm.customize [
                            "modifyvm", :id,
                            "--name", "Test_Environment",
                            "--memory", "1024"
                          ]
    

    You can obtain the properties that you want to change from the documents for VirtualBox command-line options:

    The vagrant documentation has the section on how to change IP address:

    Vagrant::Config.run do |config|
      config.vm.network :hostonly, "192.168.50.4"
    end
    

    Also you can restructure the configuration like this, ending is do with end without nesting it. This is simpler.

    config.vm.define :web do |web_config|
        web_config.vm.box = "lucid32"
        web_config.vm.forward_port 80, 8080
    end
    web_config.vm.provision :puppet do |puppet|
        puppet.manifests_path = "manifests"
        puppet.manifest_file = "lucid32.pp"
    end