Vagrant - how to configure vagrant ssh when using private interfaces?

梦想的初衷 提交于 2020-01-02 08:34:09

问题


I have a multivm vagrantfile setup with 3 vms. Two of the vm's have their NAT network interface disabled, and solely use a static ip on an internal interface.

The side effect is that I am no longer able to run vagrant ssh foo to connect to the vm's.

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

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  #config.vm.box = "PuppetlabsCent64"
  #config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box"
  config.vm.box = "Debian-7-2"
  config.vm.box_url= "https://dl.dropboxusercontent.com/u/197673519/debian-7.2.0.box"
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network :private_network, ip: "192.168.45.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network :public_network

  config.vm.synced_folder ".", "/vagrant_data"

  config.vm.provider :virtualbox do |vb|
   vb.customize ["modifyvm", :id, "--memory", "512"]
  end

     config.vm.define "r", primary: true  do |router|
       router.vm.box = "Debian-7-2"
       router.vm.network :private_network, ip: "192.168.45.11"

     end

     config.vm.define "r1" do |roomate1|
       roomate1.vm.box = "Debian-7-2"
       roomate1.vm.network :private_network, ip: "192.168.45.12"
     end

     config.vm.define "r2" do |roomate2|
       roomate2.vm.box = "Debian-7-2"
       roomate2.vm.network :private_network, ip: "192.168.45.13"
     end

   config.vm.provider :virtualbox do |vb|
     vb.customize "post-boot",["controlvm", :id, "setlinkstate1", "off"]
   end

end

This thread in the vagrant user group, gave me the idea to check the default vagrant config.

I've tried each of the following with no luck

 config.vm.define "r", primary: true  do |router|
   router.vm.box = "Debian-7-2"
   router.vm.network :private_network, ip: "192.168.45.11"
   #config.ssh.host "192.168.45.11"
   #router.vm.network :forwarded_port, host: "192.168.45.11"
   #router.vm.box_url = "192.168.45.11"
   #router.vm.boot_timeout = 200
   #router.vagrant.host = "192.168.45.11"
   #router.ssh.host = "192.168.45.11"
 end

#non working 
sowen@pv-sowen-nb:~/Code/flatmate-firewall$ vagrant ssh-config r
Host r
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/sowen/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

Running vagrant up hangs part way through the boot process, causing me to have to wait 300 seconds for each vm to boot.

The error message

Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period. This can
mean a number of things.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

Is there a way to configure vagrant ssh to use the correct ip & port so that it doesn't time out?

Source : https://github.com/spuder/flatmate-firewall/blob/master/Vagrantfile


回答1:


I can see your problem in your Vagrantfile, but I show you my example with two machine.

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  config.vm.define 'app' do |app_config|
    app_config.vm.box = 'ubuntu_app'
    app_config.vm.host_name = 'app'
    app_config.vm.network "private_network", ip: "192.168.33.33"
  end

  config.vm.define 'web' do |web_config|
    web_config.vm.box = 'ubuntu_app'
    web_config.vm.host_name = 'web'
    web_config.vm.network "private_network", ip: "192.168.33.34"
  end
end

And then I connect to the "web" machine with the standard ssh conection

roberto@rcisla-pc:~/Desktop/vagrant$ ssh vagrant@web -p 22
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Sun Jan 12 13:18:18 2014 from 192.168.33.1
vagrant@web:~$

equal with the "app machine"

roberto@rcisla-pc:~/Desktop/vagrant$ ssh vagrant@app -p 22
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Sun Jan 12 13:18:18 2014 from 192.168.33.1
vagrant@app:~$

I hope this help.



来源:https://stackoverflow.com/questions/20941224/vagrant-how-to-configure-vagrant-ssh-when-using-private-interfaces

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!