62

Capistranoを使用し、テスト仮想サーバーとしてVagrantを使用して、自動展開を開発しています。

問題は、VagrantのIPが「sshそれに」入る必要があるということです。

IPを試しifconfigて取得しましたが、正確なVagrantIPではないようです。

誰かがVagrantIPを取得するのを手伝ってくれますか?

4

13 に答える 13

53

デフォルトでは、vagrant ボックスには IP アドレスがありません。IP アドレスを見つけるには、Vagrantfilethen 呼び出しで IP アドレスを割り当てるだけです。vagrant reload

ホスト マシンからのみ vagrant マシンにアクセスする必要がある場合は、「プライベート ネットワーク」をセットアップするだけで十分です。デフォルトの適切な行のコメントを解除する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

iOS や Android などのモバイル デバイス向けの開発など、ホスト マシンの外部で vagrant にアクセスできるようにする必要がある場合は、パブリック ネットワークを有効にする必要があり192.168.1.10ます。

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

パブリック ネットワークの構成について詳しくは、https://www.vagrantup.com/docs/networking/public_network.htmlをご覧ください。

于 2016-09-28T23:31:46.473 に答える
40

新しい VM 上のサービスを指すようにホスト システムで構成するには、IP必要であることがわかりました。/etc/hosts

これは、私が IP を取得するために使用するものの大まかなバージョンです。Vagrant に SSH マジックを実行させ、VM にそのアドレスを尋ねます。あなたのニーズに合わせて微調整してください。

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

Vagrant Docsでこれを見つけました。彼らはそれを有効なアプローチと考えているようです:

これにより、予約済みアドレス空間から IP アドレスが自動的に割り当てられます。IP アドレスは、vagrant ssh を使用してマシンに SSH で接続し、ifconfig などの適切なコマンド ライン ツールを使用して IP を見つけることによって決定できます。

于 2014-03-11T18:15:44.777 に答える
29

走る:

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'
于 2013-02-14T17:51:45.753 に答える
25

ターミナルを開き、Vagrantfile のパスに cd して、これを書き込みます

(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

于 2016-12-20T21:57:18.247 に答える
17

そのための小さなvagrant-addressプラグインを開発しました。シンプルで、クロスプラットフォーム、クロスプロバイダーであり、スクリプトは必要ありません。

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

于 2015-02-11T18:30:41.467 に答える
8

ターミナルタイプで:

ip addr show
于 2016-08-02T15:46:22.630 に答える
0

私はまだここでそれを見たことがないので...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
vagrant@ubuntu-bionic:~$ 

vagrant ファイルでは、次のようにアドレスを割り当てました。

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

ご覧のとおり、 IP address for enp0s8: 192.168.33.10

于 2019-05-22T12:10:56.623 に答える
0

このようなことに遭遇したので、Vagrant ボックス内に run bash スクリプトを追加し、ホスト フォルダー内のパブリック IP アドレス ファイルの出力を取得しました。

これを Vagrantfile に追加します

...
  config.vm.provision "shell", path: "public-ip.sh"
  config.vm.synced_folder '.', '/vagrant'
...

同じ Vagrantfile フォルダーに bash スクリプト名 public-ip.sh を作成します


#!/bin/bash 

# change eth1 to your desired network interface, in my vagrantfile i have first NAT and second is bridge dhcp network and i want to know random dhcp IP.

box_ip=$(ip address show eth1 | grep 'inet ' | sed -e 's/^.*inet //' -e 's/\/.*$//')" 

echo "$box_ip" | tee public_ip.txt

echo "add box ip to your host machine /etc/hosts entry so you can connect the box using box hostname"


vagrant up を実行すると、パブリック ip またはプライベート ip のボックスの vagrant 出力が表示され、ボックスのたびにホスト エントリに追加するために使用できます。

于 2021-04-01T07:58:19.123 に答える