如何找到Vagrant IP?

Lin*_*nda 46 capistrano vagrant

我一直在使用Capistrano开发自动部署,并使用Vagrant作为我的测试虚拟服务器.

问题是,我需要Vagrant的IP" ssh进入它".

我试过ifconfig并获得了IP,但看起来它不是确切的流浪者IP.

任何人都可以帮助我获得Vagrant IP吗?

gtz*_*lla 43

默认情况下,vagrant框没有任何ip地址.要查找IP地址,只需在Vagrantfile当时的呼叫中分配IP地址即可vagrant reload

如果您只需要从主机访问流浪汉机器,则只需设置"专用网络"即可.在默认情况下取消注释相应的行Vagrantfile,或添加此代码段.如果您希望VM显示在172.30.1.5它上面,则如下所示:

config.vm.network "private_network", ip: "172.30.1.5"

详细了解专用网络.https://www.vagrantup.com/docs/networking/private_network.html

如果您需要在主机外部访问vagrant,例如针对iOS或Android等移动设备进行开发,则必须启用公共网络,您可以使用静态IP,例如192.168.1.10DHCP.

config.vm.network "public_network", ip: "192.168.1.10"

了解有关配置公共网络的详细信息https://www.vagrantup.com/docs/networking/public_network.html

  • 这应该是答案。他应该从静态 IP 池中修复 IP 地址。或者先创建一个网络设计。 (2认同)

qui*_*tin 36

我发现我确实需要IP才能/etc/hosts在主机系统上配置指向新VM上的服务.

这是我用来获取IP的粗略版本.让Vagrant做其SSH魔术并向VM询问其地址; 根据您的需求进行调整.

new_ip=$(vagrant ssh -c "ip address show eth0 | grep 'inet ' | sed -e 's/^.*inet //' -e 's/\/.*$//'")
Run Code Online (Sandbox Code Playgroud)

我刚在Vagrant Docs中找到了这个.看起来他们认为这是一种有效的方法:

这将自动从保留的地址空间分配IP地址.可以通过使用vagrant ssh将SSH连接到计算机并使用适当的命令行工具查找IP(例如ifconfig)来确定IP地址.

  • 删除该换行符的更好方法是简单地添加`| tr -d'\n'如下:`vagrant ssh -c"ip address show eth0 | grep'inet'| sed -e's /^.*inet //'-e's /\/.*$ //'| tr -d'\n'"2>/dev/null` (3认同)
  • 对于需要IP的这种简单用例,你必须开玩笑吧 (3认同)
  • 使用 `vagrant ssh -c "..." -- -q` 将 ssh 置于安静模式并仅获取 IP 地址而没有任何额外消息。 (2认同)

mpa*_*pis 24

跑:

vagrant ssh-config > .ssh.config
Run Code Online (Sandbox Code Playgroud)

然后在 config/deploy.rb

role :web, "default"     
role :app, "default"
set :use_sudo, true
set :user, 'root'
set :run_method, :sudo

# Must be set for the password prompt from git to work
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
ssh_options[:config] = '.ssh.config'
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,`vagrant ssh-config`没有显示VM真正的SSH配置.使用该IP /端口只会得到错误"名称或服务未知" (9认同)
  • 当明显错误时,为什么接受这个答案?所有这个命令都会显示主机上用来ssh进入vagrant box的配置.如果您在Vagrantfile中使用`private_network`设置,并且想要找到VM的IP,那么您可以向它发出HTTP请求或者其他任何内容,那么如下所示,它似乎是目前唯一可以通过SSH进入它的方式并使用`ifconfig`或其他东西来查找. (5认同)

小智 17

打开终端,来到你的Vagrantfile的路径并写下来

(Linux)vagrant ssh -c"hostname -I | cut -d''-f2"2>/dev/null

(OS X)vagrant ssh -c"hostname -I | cut -d''-f2"2>/dev/null | pbcopy

Linux的命令也适用于Windows.对不起,我无法测试.

来源:https://coderwall.com/p/etzdmq/get-vagrant-box-guest-ip-from-host

  • 这应该是公认的答案。它简单,可编写脚本,并返回无业游民框使用的实际IP地址。 (2认同)

mku*_*min 14

我为此开发了一个小的vagrant-address插件.它是简单的,跨平台的,跨提供者的,不需要脚本.

https://github.com/mkuzmin/vagrant-address


小智 8

在终端类型中:

ip addr show
Run Code Online (Sandbox Code Playgroud)

  • 我看到了大量的输出.我怎么知道所有输出中的IP是什么? (4认同)

bso*_*uza 5

我在VagrantFile做过:

REMOTE_IP = %x{/usr/local/bin/vagrant ssh-config | /bin/grep -i HostName | /usr/bin/cut -d\' \' -f4}
run "ping #{REMOTE_IP}"
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用了"%x {}"ruby函数.