Comment trouver L'IP vagabonde?

J'ai développé un déploiement automatisé en utilisant Capistrano et en utilisant Vagrant comme serveur virtuel de test.

La chose est, j'ai besoin de L'adresse IP de Vagrant pour "ssh dedans".

J'ai essayé ifconfig et j'ai eu L'IP mais il semble que ce N'est pas l'IP vagabonde exacte.

Quelqu'un peut-il m'aider à obtenir L'IP vagabonde?

31
demandé sur the Tin Man 2013-02-14 12:49:05

9 réponses

Exécuter:

vagrant ssh-config > .ssh.config

, puis dans 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'
19
répondu mpapis 2018-09-18 15:51:08

Je trouve que je fais besoin de L'IP afin de configurer /etc/hosts sur le système hôte pour pointer vers les services sur la nouvelle machine virtuelle.

Voici une version approximative de ce que j'utilise pour récupérer L'IP. Laissez Vagrant faire sa magie SSH et demandez à la machine virtuelle son adresse; tweak pour vos besoins.

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

Je viens de trouver ceci dans les documents Vagrant . On dirait qu'ils le considèrent comme une approche valide:

Cela affectera automatiquement une adresse IP à partir de l'adresse réservée espace. L'adresse IP peut être déterminée en utilisant vagrant SSH à SSH dans la machine et en utilisant l'outil de ligne de commande approprié pour trouver la propriété intellectuelle, tels que la commande ifconfig.

33
répondu quickshiftin 2016-09-13 23:38:33

Par défaut, une boîte vagabonde n'a pas d'adresse ip. Afin de trouver l'adresse IP, il vous suffit d'attribuer l'adresse IP dans votre Vagrantfile, puis appel de vagrant reload

Si vous avez juste besoin d'accéder à une machine vagabonde à partir de la machine hôte, la configuration d'un" réseau privé " est tout ce dont vous avez besoin. Décommentez la ligne appropriée dans un Vagrantfile par défaut, ou ajoutez cet extrait de code. Si vous voulez que votre VM apparaisse à 172.30.1.5, ce serait le suivant:

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

En savoir plus sur les réseaux privés. https://www.vagrantup.com/docs/networking/private_network.html

Si vous avez besoin de vagrant pour être accessible en dehors de votre machine hôte, par exemple pour le développement sur un appareil mobile tel que iOS ou Android, vous devez activer un réseau public que vous pouvez utiliser soit IP statique, comme 192.168.1.10, ou DHCP.

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

En Savoir plus sur la configuration d'un réseau public https://www.vagrantup.com/docs/networking/public_network.html

30
répondu gtzilla 2016-09-28 23:31:46

J'ai développé un petit pluginVagrant-address pour cela. Il est simple, multi-plateforme, multi-fournisseur, et ne nécessite pas de script.

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

12
répondu mkuzmin 2017-03-14 16:28:20

Ouvrez le terminal, venez sur le chemin de votre fichier Vagrant et écrivez ceci

(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

La commande pour Linux fonctionne également pour windows. Je n'ai aucun moyen de tester, désolé.

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

8
répondu IuriMattos 2016-12-20 21:57:18

Dans le type de terminal:

ip addr show
6
répondu Gabriel Comeau 2016-09-13 23:40:51

Je l'ai fait à VagrantFile:

REMOTE_IP = %x{/usr/local/bin/vagrant ssh-config | /bin/grep -i HostName | /usr/bin/cut -d\' \' -f4}
run "ping #{REMOTE_IP}"

Comme vous pouvez le voir, j'ai utilisé la fonction ruby " % x {}".

5
répondu bsouza 2015-02-04 19:27:33

J'avais besoin de le savoir pour dire à un utilisateur ce qu'il fallait ajouter au fichier hôte de sa machine hôte. Cela fonctionne pour moi à l'intérieur de vagrant en utilisant juste 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"
0
répondu Martin Francis 2018-04-07 13:09:37

Je sais que ce post est vieux mais je veux ajouter quelques points à cela!

Vous pouvez essayer

vagrant ssh -c "ifconfig | grep inet" hostname 

Ce sera facile si vous avez configuré un nom à vos invités individuellement!

-2
répondu Mahesh Chandra 2018-04-19 19:18:35