Как найти Vagrant IP?
Я разрабатываю автоматическое развертывание с использованием Capistrano и использую Vagrant в качестве моего тестового виртуального сервера.
Дело в том, что мне нужен IP-адрес Vagrant для "ssh
в него".
Я попробовал ifconfig
и получил IP-адрес, но похоже, что это не точный брандмауэр.
Может кто-нибудь помочь мне получить Vagrant IP?
Ответы
Ответ 1
бежать:
vagrant ssh-config > .ssh.config
а затем в 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'
Ответ 2
По умолчанию брандмауэр не имеет IP-адреса. Чтобы найти IP-адрес, вы просто назначаете IP-адрес в Vagrantfile
, а затем вызываете vagrant reload
Если вам просто нужно получить доступ к бродящей машине только с хост-машины, вам понадобится настроить "частную сеть". Либо раскомментируйте соответствующую строку по умолчанию Vagrantfile
, либо добавьте этот фрагмент. Если вы хотите, чтобы ваша виртуальная машина появлялась в 172.30.1.5
, она была бы следующей:
config.vm.network "private_network", ip: "172.30.1.5"
Узнайте больше о частных сетях. https://www.vagrantup.com/docs/networking/private_network.html
Если вам нужно, чтобы брандмауэр был доступен за пределами вашей главной машины, например, для разработки против мобильного устройства, такого как iOS или Android, вам необходимо включить общедоступную сеть, в которой вы можете использовать статический IP-адрес, например 192.168.1.10
, или DHCP.
config.vm.network "public_network", ip: "192.168.1.10"
Подробнее о настройке общедоступной сети https://www.vagrantup.com/docs/networking/public_network.html
Ответ 3
Я нахожу, что я do нуждается в IP, чтобы настроить /etc/hosts
на хост-систему, чтобы указать на службы на новой виртуальной машине.
Вот грубая версия того, что я использую для извлечения IP. Пусть бродяга делает свою магию SSH и спрашивает виртуальную машину для ее адреса; настраивать для ваших нужд.
new_ip=$(vagrant ssh -c "ip address show eth0 | grep 'inet ' | sed -e 's/^.*inet //' -e 's/\/.*$//'")
Я только что нашел это в Vagrant Docs. Похоже, они считают его действительным подходом:
Это автоматически назначит IP-адрес с зарезервированного адреса пространство. IP-адрес можно определить, используя брандмауэр ssh для SSH в машину и с помощью соответствующего инструмента командной строки, чтобы найти IP, например ifconfig.
Ответ 4
Для этого я разработал небольшой плагин vagrant-address. Это простой, кросс-платформенный, кросс-провайдер, и не требует скриптов.
https://github.com/mkuzmin/vagrant-address
Ответ 5
откройте терминал, зайдите на путь вашего Vagrantfile и напишите это
(Linux) vagrant ssh -c "имя хоста -I | cut -d '' -f2" 2>/dev/null
(OS X) vagrant ssh -c "имя хоста -I | cut -d '' -f2" 2>/dev/null | pbcopy
Команда для Linux также работает для Windows. У меня нет возможности проверить, извините.
источник: https://coderwall.com/p/etzdmq/get-vagrant-box-guest-Ip-from-host
Ответ 6
В типе терминала:
ip addr show
Ответ 7
Я сделал в VagrantFile:
REMOTE_IP = %x{/usr/local/bin/vagrant ssh-config | /bin/grep -i HostName | /usr/bin/cut -d\' \' -f4}
run "ping #{REMOTE_IP}"
Как вы можете видеть, я использовал функцию "% x {}" ruby.
Ответ 8
Завершение соединения, открытого с помощью vagrant ssh
, покажет адрес, поэтому можно выполнить пустую или пустую команду:
$ vagrant ssh -c ''
Connection to 192.168.121.155 closed.
Ответ 9
Мне нужно было знать это, чтобы сообщить пользователю, что добавить в файл хоста его хост-машины. Это работает для меня внутри бродяги, используя только Bash:
external_ip=$(cat /vagrant/config.yml | grep vagrant_ip | cut -d' ' -f2 | xargs)
echo -e "# Add this line to your host file:\n${external_ip} host.vagrant.vm"
Ответ 10
Потому что я еще не видел его здесь... Когда вы vagrant ssh
в коробку, я понял, что на самом деле он говорит вам IP-адреса интерфейсов. Вы можете получить это там. Например.
{~/Documents/jupyterhub-ansible} (features *%)$ vagrant ssh
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Wed May 22 12:00:34 UTC 2019
System load: 0.12 Processes: 101
Usage of /: 56.5% of 9.63GB Users logged in: 0
Memory usage: 19% IP address for enp0s3: 10.0.2.15
Swap usage: 0% IP address for enp0s8: 192.168.33.10
10 packages can be updated.
1 update is a security update.
Last login: Wed May 22 12:00:04 2019 from 192.168.33.1
[email protected]:~$
В моем бродячем файле я назначил адрес следующим образом:
config.vm.network "private_network", ip: "192.168.33.10"
и, как вы можете видеть, IP address for enp0s8: 192.168.33.10
Ответ 11
Я знаю, что этот пост старый, но я хочу добавить несколько моментов к этому!
ты можешь попробовать
vagrant ssh -c "ifconfig | grep inet" hostname
это будет легко, если вы настроите имя для ваших гостей индивидуально!