私の会社のネットワークはプロキシを使用しています。したがって、vagrant up
を使用すると、401アクセス許可エラーが表示されました。
Vagrantを使用するための設定を行うにはどうすればよいですか?
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"
プロキシで認証が必要な場合は、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
Proxyconfをインストールするとこれは解決しますが、プロキシの背後でvagrant plugin install
コマンドを使用してプラグインをインストールすることはできません。Bundlerはエラーを発生させます。
uNIXのようなシステムを使用している場合は、環境にプロキシを設定します
export http_proxy=http://user:password@Host:port
または、ここでより詳細な回答を取得します: プロキシの背後でバンドラーを使用する方法?
この後、proxyconfを設定します
プロキシ設定を自動検出し、すべての迷惑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を起動します!
Windowsホスト上
cMDプロンプトを開きます。
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
上記のスニペットのアドレスとポートを、状況に応じて適切なものに置き換えます。上記は、CMDプロンプトを閉じるまで設定されたままになります。正常に機能する場合は、新しいCMDプロンプトを開くたびに設定する必要がないように、環境変数に永続的に追加することを検討してください。
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設定を指定して、環境設定変数に依存しないようにすることができます
プラグイン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間の接着剤として機能します
完全なウォークスルーについては、企業プロキシの背後での浮浪者の設定について このブログエントリ をご覧ください
質問ではVM Providerについて言及していませんが、私の場合は、同じ環境でVirtual Boxを使用しています。 Virtual Box GUIには、機能させるために有効にする必要があるオプションがあります。 Virtual Boxアプリの設定:ファイル>>設定... >>プロキシにあります。これを設定したら、問題なく作業できました。このヒントが皆さんにも役立つことを願っています。
パスワードに特殊文字が含まれていると、プロキシで問題が発生します。それらをエスケープするか、パスワードに特殊文字を使用しないでください。
実際にプロキシ設定とプラグインのインストールを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から参照するだけです。)
MS Windowsでは、これが機能します。
set http_proxy=< proxy_url >
set https_proxy=< proxy_url >
そして、* nixに相当するもの:
export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
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"