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


92

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

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


1
これをググった?
Ghost Answer

すみません、私はしませんでしたvagrant plugin install vagrant-proxyconf
ithelloworld 2013年

私がインストールされ、設定ファイルに私のプロキシURLをsetted後しかし、結果はsame.401だった
ithelloworld

回答:


103

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"

4
config.env_proxy.*バージョン2.0で非推奨になり、に置き換えられましたconfig.proxy.*
Tomalak、2014年

config.proxy.https = "https://yourproxy:8080"それhttpshttp、2行目です
eldos 14

2
それは両方かもしれません。私の会社ではhttpとhttpsはhttpにある同じプロキシを通過します
Alejandro Moreno

30
「vagrant plugin install vagrant-proxyconf」を実行すると、プロキシにヒットしますか?
Mark Broadhurst、2015

9
ひとつだけ言っておきますが、プロキシの背後にいる場合はプラグインをインストールできません。
user3426711 2018年

87

プロキシで認証が​​必要な場合は、パスワードを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_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

Windowsの場合、エクスポートではなくセットを使用します。

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

その後

set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

1
また、それを環境に残したくない場合は、1つのコマンドでその環境変数に対してVAGRANT_HTTP_PROXY = " user:password @ host:port " vagrant up(exportまたはsetなし)を実行できます。
maccam912 2015

4
プロキシ設定をVagrantfileに置く必要がないため、それらが明確に属していないため、優れたソリューション
2015年

7
Windows Powersehell v6.0:$ env:http_proxy = " user:password @ host:port " $ env:https_proxy = " user:password @ host:port " vagrant plugin install vagrant-proxyconf
Xolani

1
Windows Git Bashを使用している場合は、Mac / Linux(Bash内)の手順を使用してください。例:export http_proxy = " user:password @ host:port "
Xolani

1
export VAGRANT_HTTPS_PROXY=${https_proxy}Mac / Linuxの手順で(?)を忘れました。
トムハント

53

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

UNIXライクなシステムを使用している場合は、環境にプロキシを設定します

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

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

この後にproxyconfを設定します


10
Windowsでは、あなたが提案したことを行いましたが、「エクスポート」の代わりに「SET」を使用しました。Vagrantfileに変更を加えることなく、期待どおりに機能しました。
Daniel Watrous 14

28

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

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

vagrant plugin install vagrant-proxyconf

このconfをプライベート/ユーザー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を起動します!


1
ホストOSですでに宣言した既存のHTTP_PROXY環境変数を再利用するため、この回答が気に入っています。切り貼りする死!!
ripvlan 2015

前向きな方法のように見えます。プロキシの外に出るときにそれを無効にするのはどうですか?vagrantプラグインは、さまざまな異なるツール/アプリを機能させるために複数の場所でゲストLinuxをパンチすることがわかりました。無効にする簡単な方法はありますか?これも少なくともコマンドラインフラグからはめ込まれ、1つvagrant reloadは修正されるため、新しいネットワークへの接続時に自動的にプロキシ設定のイン/アウトを検出し、ユーザーに警告するか、シームレスに機能させることが最善です。 tmatilai.github.io/vagrant-proxyconfは、無効化について言及しましたが、これらの点に対処していることを確認していません。
arntg 2016年

よくわかりませんが、このスニペットはhttp_proxy env varの存在をテストしてプロキシプラグインをセットアップします。* _proxy envを使用しない場合は、「アクティブ化しない」(?)にする必要があります
危険な

11

Windowsホスト上

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

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

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


9

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設定を提供して、環境設定変数から独立させることができます


SSL証明書の検証中のエラーを回避するための単なる追加パラメーター(httpsからhttpへのrubygem):vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

これは他のものを必要としないので、これは前のものより良い解決策です。他のソリューション(プラグインのインストール)では、最初に無料のインターネットアクセスを設定する必要があります。
Raul Luna

5

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

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

しかし、まだうまくいかないことがかなりあります。まず、プロキシの背後にある場合、おそらくvagrantプラグインをインストールできません。その場合は、たとえばrubygems.orgからソースをダウンロードし、ソースからインストールする必要があります。

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

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

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


これがなぜ反対票だったのか知りたいです。問題の解決方法、および発生する可能性のある他の潜在的な問題の解決方法について説明します
Rune FS

これはほぼ同じ答えがすでに複数回提供されていませんか?さらに、企業のプロキシを使用している場合に、迷惑なプラグインを取得するために何をすべきかについては述べていません。問題があると述べてから、他の場所にリンクします。
2015

今のように見えるはずですvagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem出典
マーティン

plugin-sourceローカルGEMからのインストールに使用するのは素晴らしいアイデアですが、Windowsでこれをまだ動作させることができていません。構文が間違っているかどうかわかりませんfile://C:/path1/path2/vagrant-proxyconf-1.5.2.gem。私は@Martinが前述したアプローチも試しましたが、その場合でもルビジェムにコンタクトしようとしているため、これも機能しませんでした
Adam Burley

2
これは私にとってvagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources--plugin-clean-sourcesうまくいきました:重要なのは、Rubygemにアクセスしないようにすることです
Adam Burley

2

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


1

企業環境専用の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

パスワードの一部の特殊文字は、プロキシで問題を引き起こします。それらをエスケープするか、パスワードに特殊文字を含めないでください。


1

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

$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"

0

MS Windowsでは、これは私たちにとってはうまくいきます:

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

* nixと同等:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.