Sieć mojej firmy korzysta z serwera proxy. Więc kiedy używam vagrant up
, pokazał mi błąd pozwolenia 401.
Jak mogę ustawić niektóre ustawienia, aby używać włóczęgi?
Sieć mojej firmy korzysta z serwera proxy. Więc kiedy używam vagrant up
, pokazał mi błąd pozwolenia 401.
Jak mogę ustawić niektóre ustawienia, aby używać włóczęgi?
vagrant plugin install vagrant-proxyconf
.
Odpowiedzi:
Zainstaluj proxyconf:
vagrant plugin install vagrant-proxyconf
Skonfiguruj swój plik Vagrantfile:
config.proxy.http = "http://yourproxy:8080"
config.proxy.https = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
config.env_proxy.*
jest przestarzały od wersji 2.0 i został zastąpiony przez config.proxy.*
.
config.proxy.https = "https://yourproxy:8080"
czy to https
czy http
w drugiej linii
Jeśli Twój serwer proxy wymaga uwierzytelnienia, lepiej jest ustawić zmienną środowiskową niż przechowywać hasło w pliku Vagrantfile. Również plik Vagrantfile może być łatwo używany przez inne osoby, które nie korzystają z serwera proxy.
Dla Mac / Linux (w Bash)
export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf
następnie
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
W systemie Windows użyj set zamiast eksportu.
set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf
następnie
set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
export VAGRANT_HTTPS_PROXY=${https_proxy}
w instrukcjach Mac / Linux.
Zainstalowanie proxyconf rozwiąże ten problem, ale za proxy nie można zainstalować wtyczki po prostu za pomocą polecenia vagrant plugin install
, Bundler zgłosi błąd.
ustaw serwer proxy w swoim środowisku, jeśli używasz systemu podobnego do uniksowego
export http_proxy=http://user:password@host:port
lub uzyskaj bardziej szczegółową odpowiedź tutaj: Jak używać bundlera za proxy?
po tym skonfiguruj proxyconf
Automatycznie wykrywaj ustawienia proxy i wstrzykuj je do wszystkich maszyn wirtualnych włóczęgów
zainstaluj wtyczkę proxy
vagrant plugin install vagrant-proxyconf
dodaj to conf do ciebie prywatnego / użytkownika VagrantFile (zostanie wykonane dla wszystkich twoich projektów):
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
teraz uruchom swoją maszynę wirtualną!
vagrant reload
zostanie naprawiony i może być najlepszy do wykrywania ustawień proxy automatycznie przy podłączaniu do nowych sieci i albo ostrzegania użytkownika, albo sprawienia, by działało bezproblemowo. tmatilai.github.io/vagrant-proxyconf wspomniał o wyłączeniu, ale nie jestem pewien, czy dotyczy tych punktów.
Na hoście z systemem Windows
otwórz monit CMD;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
Zamień adres i port w powyższych fragmentach na odpowiednie dla Twojej sytuacji. Powyższe pozostanie ustawione, dopóki nie zamkniesz monitu CMD. Jeśli to zadziała, rozważ dodanie ich na stałe do zmiennych środowiskowych, aby nie trzeba było ich ustawiać za każdym razem, gdy otwierasz nowy monit CMD.
W systemie Windows musisz ustawić zmienną, aby określić ustawienia proxy, pobrać wtyczkę vagrant-proxyconf: (zamień {PROXY_SCHEME} (http: // lub https: //), {PROXY_IP} i {PROXY_PORT} odpowiednimi wartościami)
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
Następnie możesz dodać wtyczkę, aby na stałe zakodować ustawienia proxy w pliku włóczęgi
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
a następnie możesz podać ustawienia config.proxy.xxx w pliku Vagrantfile, aby były niezależne od zmiennych ustawień środowiskowych
Będziesz chciał zainstalować wtyczkę proxyconf, ponieważ to sprawia, że konfiguracja proxy dla maszyn gości jest całkiem prosta w VagrantFile
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
Jednak jest kilka rzeczy, które mogą się nie udać. Po pierwsze, prawdopodobnie nie możesz zainstalować wtyczek włóczęgów, gdy jesteś za proxy. W takim przypadku należy pobrać źródło np. Z rubygems.org i zainstalować ze źródła
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
Jeśli rozwiążesz ten problem, możesz mieć szczęście przebywać za proxy NTLM, co oznaczaże jeśli używasz * nix na swoich maszynach-gościach to nadal masz jakąś drogę do zrobienia, ponieważ uwierzytelnianie NTLM nie jest obsługiwane natywnie Istnieje wiele sposobów rozwiązania tego problemu. Użyłem CNTLM do rozwiązania tej części układanki. Działa jak klej między standardowymi protokołami autoryzacji a NTLM
Aby uzyskać kompletny przewodnik, zapoznaj się z tym wpisem na blogu dotyczącym konfigurowania włóczęgi za korporacyjnym proxy
plugin-source
zainstalowania z lokalnego GEM-u, ale nie udało mi się jeszcze uruchomić tego w systemie Windows. Nie jestem pewien, czy moja składnia jest nieprawidłowa, na przykład file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
? Wypróbowałem również podejście, o którym @Martin wspomniał powyżej, to również nie zadziałało, ponieważ w tym przypadku nadal próbuje skontaktować się z rubygemami
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
kluczem jest --plugin-clean-sources
to, że nie próbuje uzyskać dostępu do rubygemów
Pytanie nie wspomina o dostawcy maszyny wirtualnej, ale w moim przypadku korzystam z Virtual Box w tym samym środowisku. W GUI wirtualnego pudełka jest opcja, którą musiałem włączyć, aby działała. Znajduje się w preferencjach aplikacji Virtual Box: Plik >> Preferencje ... >> Proxy . Gdy to skonfigurowałem, mogłem pracować bez problemów. Mam nadzieję, że ta wskazówka również wam pomoże.
Jeśli naprawdę chcesz, aby konfiguracje proxy i instalacje wtyczek były w Twoim pliku Vagrantfile, na przykład jeśli tworzysz plik Vagrantfile tylko dla środowiska korporacyjnego i nie możesz pozwolić użytkownikom edytować zmiennych środowiskowych, oto odpowiedź dla mnie:
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
(Jeśli nie, po prostu ustaw je jako zmienne środowiskowe, tak jak mówią inne odpowiedzi, i odwołaj się do nich z env w dyrektywach config.proxy.http (s).)
Niektóre znaki specjalne w haśle powodują problemy w proxy. Możesz ich uciec lub unikać znaków specjalnych w haśle.