Setting a VM's mac address in Vagrant - mac-address

The documentation lists that the mac address of a VM can be set in the Vagrantfile, however everything I add seems to end up being a syntax error. Anyone successfully done this?

I used this:
config.vm.network :bridged , :mac => "080027XXXXXX"
and got what I wanted.
The docs are unclear on what the syntax for the options hash were, and there seemed to be no example on what this should look like. So, here it is! Bridged with a mac address (edited of course). This brings up eth1 with the mac specified, which makes my DHCP server happy, and gives it a proper fqdn on my network.

This is an old question, but I had the same issue just now. Vagrant documentation v2 still seems incomplete. In the end I used this line in the Vagrantfile with vagrant 1.2.7:
config.vm.network "public_network", :bridge => 'enp4s0', :mac => "5CA1AB1E0001"
This:
sets the host interface named 'enp4s0' as the bridge interface,
which as 'eth0' on the guest is then assigned an ip address by the same DHCP the host uses
Also sets 5C:A1:AB:1E:00:01 as the guest's mac address

hmm, the network config didn't help in my case. After defining the MAC Address directly in the Vagrantfile via config.vm.base_mac = "MyEth0MacAddressWithoutSlashes" my machine started =)

On Vagrant version 2.0.1, I write in the Vagrantfile for a private_network (provider = VirtualBox ; version 5.2.0) :
config.vm.network "private_network", ip: "X.X.X.X", mac: "080027xxxxxx"

The information provided below is outdated. As per documentation to allow IP to be assigned via DHCP simply use:
config.vm.network "public_network"
This way you don't need to deal with mac address, it will be generated on its own.
If you need custom mac address attached to the network device then:
config.vm.network "public_network", :mac=> "080027xxxxxx"

Related

Expo and Vagrant

I am trying to build a react-native-app on a vagrant linux box.
I am trying to access the app on my phone using expo but it just does not work.
Has anyone managed to make this work with port forwarding or something similar?
You need to have the linux box on the same network as the phone.
To make this a little more specific, the vagrant file should include the following line(the ip address is optional):
config.vm.network "public_network", ip: "ip address"
for example:
config.vm.network "public_network"
config.vm.network "public_network", ip: "192.168.1.9"
Here are a couple of useful links:
Youtube tutorial by sureshkm
Vagrant docs

Switch IP's in browser

For my development environment I'm looking for a way to change/override IP addresses used in DNS lookup for a domain, so I can point the domain to my local vagrant box with ease and without changing the hostfile everytime I want to switch back and forth from the live env to the dev env. I couldn't find a way to do this so I'm hoping there is a solution for this. I'm using Mac OS X.
Perhaps the Vagrant Hostsupdater plugin can be of help. It automatically adds entries to your local hosts file, when you include the following config in your Vagrantfile:
config.vm.network :private_network, ip: "192.168.3.10"
config.vm.hostname = "www.testing.de"
config.hostsupdater.aliases = ["alias.testing.de", "alias2.somedomain.com"]
Source

Boot2Docker private network setup

How can I do the private networking for the boot2docker docker container ?
For example, If I have a webapp, I can do the following in Vagrantfile
myapp1.vm.network "private_network", ip: "1.2.3.4"
myapp2.vm.network "private_network", ip: "1.2.3.5"
myapp3.vm.network "private_network", ip: "1.2.3.6"
Then I can use my browser to access my webapp at
http://1.2.3.4
http://1.2.3.5
http://1.2.3.6
How can I achieve the same result in docker easily ?
I also looked at How to expose docker container's ip and port to outside docker host without port mapping?
But in my boot2docker1.3, it said the interface eth0:1 does not exist
I looked at https://docs.docker.com/articles/networking
The tutorial does not work for boot2docker in mac.
Any help would be appreciated, thankyou!
I believe the instructions here, linked from this question give what you are looking for. The key is this line:
sudo route -n add 172.17.0.0/16 172.16.0.11
which tells your Mac how to route to the private network inside the VirtualBox VM that the Docker containers are on. (Obviously the specific addresses can change for your specific situation)
This still doesn't give you the ability to assign specific IP addresses to specific containers; as I said an add-on like weave can do that. (note: I work on weave)
You may also like this article which gives a beginner's overview of how Boot2Docker runs and illustrates how you have IP addresses inside the VirtualBox VM, and also an IP address of that box as a whole.

vagrant homestead - public network not working on osx

I've been trying all day to get a public network setup using Vagrant 1.6.5 with VirtualBox. I really need to be able to access all my Homestead sites on my other devices (iPad, iPhone, Android phone, etc.) on my local network. The box provisions fine but the sites all timeout.
homestead.rb
config.vm.network "public_network", :bridge => "en0: Wi-Fi (AirPort)", :ip => "192.168.1.200"
My host is OS X mavericks using DHCP (192.168.1.137).
Private networking works fine, but I can't get public networking to work with any variation of the above config.
You can just grab the host's internal IP address (NOT the VM ip) and add the port :8000. Let's say your host ip is 192.168.0.5, then from any other device on your network, you can just browse to the host at 192.168.0.5:8000 and you'll hit the VM and see the Laravel home page.
This works great for me with the default homestead.rb setting:
# Configure A Private Network IP
config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"
To get my homestead machine to be visible from my LAN I did the following:
Edit the Homestead/scripts/homestead.rb file and set config.vm.network :public_network, ip: "192.168.1.123" (just make sure the IP is free).
Do a vagrant reload
Make sure my old local hosts file now points to the new IP.
The result is I can ping 192.168.1.123 from another machine in my LAN.
What is the error that you are getting? Make sure that 192.168.1.200 is not being used by any other device.
Network configuration for vagrant boxes
This row works fine for me:
config.vm.network :public_network, ip: settings["ip"] ||= "192.168.10.10", bridge: "eth0"
Then it uses the ip variable from ~/.homstead/Homestead.yaml and if thats not set it uses 192.168.10.10

Vagrant keeps creating unwanted network interfaces

I'm creating a VM definition and I want to specify a single "private_network" on the primary interface of the box (eth0, it's Linux)
Despite having only one config.vm.network statement, I keep getting the desired network set on eth1, while eth0 is assigned an ip from a 10.0.2.0/24 subnet which I have never defined.
How can I prevent this and have my desired 192.168.x.y/24 set on eth0?
Best,
Edoardo
eth0 is by default used by Vagrant for NAT (VirtualBox NAT networking mode), which allow you to vagrant ssh into the box (port forwarding rules - host 2222 <=> guest 22).
That's why you have 2 NICs even though you have only 1 config.vm.network in Vagrantfile.
I don't think it can be disabled, BUT I am not 100% sure, you may want to look into vagrant source code to dig further.
https://superuser.com/questions/957631/how-to-force-vagrant-to-have-a-single-bridged-network-interface
You can try to add the adapter: 1 to the config. Although I still find some problem with it. See if it will help you starts from somewhere.
Example:
config.vm.network "public_network", bridge: "Broadcom BCM5709C", adapter: "1", ip: "192.168.x.xx"
You will still have the eth1 which is host-only network...

Resources