J'ai développé un déploiement automatisé en utilisant Capistrano et en utilisant Vagrant comme serveur virtuel de test.
Le problème, c’est que j’ai besoin de l’adresse IP de Vagrant pour "ssh
dedans".
J'ai essayé ifconfig
et obtenu l'adresse IP, mais il semble que ce ne soit pas l'adresse IP exacte du vagabond.
Quelqu'un peut-il m'aider à obtenir la propriété intellectuelle vagabonde?
courir:
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'
Par défaut, une boîte de dialogue n'a pas d'adresse IP. Afin de trouver l'adresse IP, vous devez simplement l'attribuer dans votre Vagrantfile
puis appeler vagrant reload
.
Si vous avez juste besoin d'accéder à une machine vagabonde à partir de la machine hôte uniquement, la configuration d'un "réseau privé" est tout ce dont vous avez besoin. Supprimez la mise en commentaire de la ligne appropriée dans une valeur par défaut Vagrantfile
ou ajoutez cet extrait. 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 que vagrant soit accessible en dehors de votre ordinateur hôte, par exemple pour le développement sur un appareil mobile tel que iOS ou Android, vous devez activer un réseau public. Vous pouvez utiliser une adresse IP statique telle que 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
Je constate que j do ai besoin de l’IP pour configurer /etc/hosts
sur le système hôte afin de pointer vers les services de la nouvelle VM.
Voici une version approximative de ce que j'utilise pour récupérer l'adresse IP. Laissez Vagrant faire sa magie SSH et demandez à l’adresse VM; 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 cela dans Docs vagabond . On dirait qu'ils considèrent cette approche comme valide:
Ceci assignera automatiquement une adresse IP à partir de l'adresse réservée espace. L'adresse IP peut être déterminée en utilisant vagrant ssh en SSH dans la machine et à l'aide de l'outil de ligne de commande approprié pour rechercher l'adresse IP, telle que ifconfig.
J'ai développé un petit plugin vagrant-address pour cela. C'est simple, multi-plateforme, multi-fournisseur et ne nécessite pas de script.
ouvrez le terminal, allez sur le chemin de votre Vagrantfile et écrivez ceci
(Linux) Vagrant ssh -c "nom_hôte -I | cut -d '' -f2" 2>/dev/null
(OS X) Vagrant ssh -c "nom_hôte -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
Dans le type de terminal:
ip addr show
J'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 constater, j’ai utilisé la fonction Ruby "% x {}".
J'avais besoin de le savoir pour dire à un utilisateur quoi ajouter au fichier hôte de sa machine hôte . Cela fonctionne pour moi dans vagrant en utilisant simplement 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"