Capistranoを使用し、テスト仮想サーバーとしてVagrantを使用して、自動展開を開発しています。
問題は、VagrantのIPが「ssh
それに」入る必要があるということです。
IPを試しifconfig
て取得しましたが、正確なVagrantIPではないようです。
誰かがVagrantIPを取得するのを手伝ってくれますか?
Capistranoを使用し、テスト仮想サーバーとしてVagrantを使用して、自動展開を開発しています。
問題は、VagrantのIPが「ssh
それに」入る必要があるということです。
IPを試しifconfig
て取得しましたが、正確なVagrantIPではないようです。
誰かがVagrantIPを取得するのを手伝ってくれますか?
デフォルトでは、vagrant ボックスには IP アドレスがありません。IP アドレスを見つけるには、Vagrantfile
then 呼び出しで 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をご覧ください。
新しい 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 を見つけることによって決定できます。
走る:
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'
ターミナルを開き、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
そのための小さなvagrant-addressプラグインを開発しました。シンプルで、クロスプラットフォーム、クロスプロバイダーであり、スクリプトは必要ありません。
ターミナルタイプで:
ip addr show
私はまだここでそれを見たことがないので...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
このようなことに遭遇したので、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 出力が表示され、ボックスのたびにホスト エントリに追加するために使用できます。