web-dev-qa-db-ja.com

プロキシ環境でvagrantを使用する方法は?

私の会社のネットワークはプロキシを使用しています。したがって、vagrant upを使用すると、401アクセス許可エラーが表示されました。

Vagrantを使用するための設定を行うにはどうすればよいですか?

87
ithelloworld

Proxyconfをインストールします。

vagrant plugin install vagrant-proxyconf

Vagrantfileを構成します。

config.proxy.http     = "http://yourproxy:8080"
config.proxy.https    = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
94

プロキシで認証が​​必要な場合は、Vagrantfileにパスワードを保存するよりも環境変数を設定する方が適切です。また、Vagrantfileは、プロキシの背後にいない他のユーザーが簡単に使用できます。

Mac/Linux(Bashの場合)

export http_proxy="http://user:password@Host:port"
export https_proxy="http://user:password@Host:port"
vagrant plugin install vagrant-proxyconf

それから

export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

Windowsでは、エクスポートの代わりにsetを使用します。

set http_proxy=http://user:password@Host:port
set https_proxy=%http_proxy%
vagrant plugin install vagrant-proxyconf

それから

set VAGRANT_HTTP_PROXY="%http_proxy%"
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
80
rjdkolb

Proxyconfをインストールするとこれは解決しますが、プロキシの背後でvagrant plugin installコマンドを使用してプラグインをインストールすることはできません。Bundlerはエラーを発生させます。

uNIXのようなシステムを使用している場合は、環境にプロキシを設定します

export http_proxy=http://user:password@Host:port

または、ここでより詳細な回答を取得します: プロキシの背後でバンドラーを使用する方法?

この後、proxyconfを設定します

53
pingween

プロキシ設定を自動検出し、すべての迷惑VMに挿入します

プロキシプラグインをインストールする

vagrant plugin install vagrant-proxyconf

このconfをprivate/user VagrantFileに追加します(すべてのプロジェクトで実行されます):

vi $HOME/.vagrant.d/Vagrantfile

Vagrant.configure("2") do |config|
  puts "proxyconf..."
  if Vagrant.has_plugin?("vagrant-proxyconf")
    puts "find proxyconf plugin !"
    if ENV["http_proxy"]
      puts "http_proxy: " + ENV["http_proxy"]
      config.proxy.http     = ENV["http_proxy"]
    end
    if ENV["https_proxy"]
      puts "https_proxy: " + ENV["https_proxy"]
      config.proxy.https    = ENV["https_proxy"]
    end
    if ENV["no_proxy"]
      config.proxy.no_proxy = ENV["no_proxy"]
    end
  end
end

VMを起動します!

27
quazardous

Windowsホスト上

cMDプロンプトを開きます。

set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443

上記のスニペットのアドレスとポートを、状況に応じて適切なものに置き換えます。上記は、CMDプロンプトを閉じるまで設定されたままになります。正常に機能する場合は、新しいCMDプロンプトを開くたびに設定する必要がないように、環境変数に永続的に追加することを検討してください。

11
snacks

Windows、プロキシ設定を指定する変数を設定し、vagrant-proxyconfプラグインをダウンロードする必要があります:({PROXY_SCHEME}(http://またはhttps://)、{PROXY_IP}および{PROXY_PORTを置き換えます}正しい値で)

set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}

その後、プラグインを追加して、vagrantファイルにプロキシ設定をハードコーディングできます。

vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org

vagrantfileでconfig.proxy.xxx設定を指定して、環境設定変数に依存しないようにすることができます

9
l.cotonea

プラグインproxyconfをインストールする必要があります。これにより、VagrantFileでゲストマシンのプロキシを非常に簡単に構成できるようになるためです。

config.proxy.http     = "http://proxy:8888"
config.proxy.https    = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"

ただし、まだ間違っている可能性のあるものがかなりあります。第一に、プロキシの背後にいると、おそらく迷惑プラグインをインストールできません。その場合は、ソースをダウンロードする必要があります。 rubygems.orgからソースからインストール

$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem

その問題を解決する場合、NTLMプロキシの背後にいるという幸運があるかもしれません。つまり、ゲストマシンで* nixを使用している場合、NTLM認証はネイティブにサポートされていないため、まだいくつかの方法があります。それを解決する。 CNTLMを使用して、パズルの一部を解決しました。標準認証プロトコルとNTLM間の接着剤として機能します

完全なウォークスルーについては、企業プロキシの背後での浮浪者の設定について このブログエントリ をご覧ください

4
Rune FS

質問ではVM Providerについて言及していませんが、私の場合は、同じ環境でVirtual Boxを使用しています。 Virtual Box GUIには、機能させるために有効にする必要があるオプションがあります。 Virtual Boxアプリの設定:ファイル>>設定... >>プロキシにあります。これを設定したら、問題なく作業できました。このヒントが皆さんにも役立つことを願っています。

2
James

パスワードに特殊文字が含まれていると、プロキシで問題が発生します。それらをエスケープするか、パスワードに特殊文字を使用しないでください。

1
ernitingoel

実際にプロキシ設定とプラグインのインストールをVagrantfileに含めたい場合、たとえば、企業環境のためだけにVagrantfileを作成していて、ユーザーが環境変数を編集できないようにする場合、これが私の答えでした:

ENV['http_proxy']  = 'http://proxyhost:proxyport'
ENV['https_proxy'] = 'http://proxyhost:proxyport'

# Plugin installation procedure from http://stackoverflow.com/a/28801317
required_plugins = %w(vagrant-proxyconf)

plugins_to_install = required_plugins.select { |plugin| not Vagrant.has_plugin? plugin }
if not plugins_to_install.empty?
  puts "Installing plugins: #{plugins_to_install.join(' ')}"
  if system "vagrant plugin install #{plugins_to_install.join(' ')}"
    exec "vagrant #{ARGV.join(' ')}"
  else
    abort "Installation of one or more plugins has failed. Aborting."
  end
end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.proxy.http     = "#{ENV['http_proxy']}"
  config.proxy.https    = "#{ENV['https_proxy']}"
  config.proxy.no_proxy = "localhost,127.0.0.1"
  # and so on

(そうしない場合は、他の回答のように環境変数として設定し、config.proxy.http(s)ディレクティブのenvから参照するだけです。)

1
eis

MS Windowsでは、これが機能します。

set http_proxy=< proxy_url >
set https_proxy=< proxy_url >

そして、* nixに相当するもの:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
0
csoria

PowerShellでは、http_proxyおよびhttps_proxy環境変数を次のように設定できます。

$env:http_proxy="http://www-cache-nrs.si.fr.intraorange:3128"
$env:https_proxy="http://www-cache-nrs.si.fr.intraorange:3128"
0
kal3v