Capistranoを使用し、Vagrantをテスト仮想サーバーとして使用して、自動展開を開発しています。
問題は、VagrantのIPを「ssh
into」にする必要があるということです。
ifconfig
を試してIPを取得しましたが、それは正確な浮浪者IPではないようです。
Vagrant 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'
デフォルトでは、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
私は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を検索することで決定できます。
ターミナルを開き、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
そのための小さなvagrant-addressプラグインを開発しました。シンプルで、クロスプラットフォーム、クロスプロバイダーであり、スクリプトを必要としません。
ターミナルタイプで:
ip addr show
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関数を使用しました。
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"
まだここで見たことないから... 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