web-dev-qa-db-ja.com

Vagrant IPの見つけ方

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

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

ifconfigを試してIPを取得しましたが、それは正確な浮浪者IPではないようです。

Vagrant IPの取得を手伝ってくれる人はいますか?

44
Linda

実行:

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'
22
mpapis

デフォルトでは、Vagrant BoxにはIPアドレスがありません。 IPアドレスを見つけるには、Vagrantfileで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などの静的IPまたはDHCPを使用できるパブリックネットワークを有効にする必要があります。 。

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

パブリックネットワークの設定の詳細 https://www.vagrantup.com/docs/networking/public_network.html

43
gtzilla

私はdoIPが/etc/hostsホストシステム上で、新しいVM上のサービスを指すようにします。

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を検索することで決定できます。

35
quickshiftin

ターミナルを開き、Vagrantfileのパスにアクセスして、これを記述します

(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

15
IuriMattos

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

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

14
mkuzmin

ターミナルタイプで:

ip addr show
9
Gabriel Comeau

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関数を使用しました。

5
bsouza

vagrant sshで開いている接続を終了すると、アドレスが表示されるため、ダミーまたは空のコマンドを実行できます。

$ vagrant ssh -c ''
Connection to 192.168.121.155 closed.

ホストマシンのホストファイルに追加するものをユーザーに伝えるために、これを知る必要がありました。これは、bashで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
Martin Francis

まだここで見たことないから... 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:~$ 

私の浮浪者ファイルでは、次のようなアドレスを割り当てました。

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

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

0
Nick Brady