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?
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'
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.
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
J'ai développé un petit pluginVagrant-address pour cela. Il est simple, multi-plateforme, multi-fournisseur, et ne nécessite pas de script.
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
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 {}".
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"
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!