В моей сети сети используется прокси. Поэтому, когда я использую vagrant up
, он показал мне ошибку разрешения 401.
Как я могу сделать некоторые настройки для использования бродяг?
В моей сети сети используется прокси. Поэтому, когда я использую vagrant up
, он показал мне ошибку разрешения 401.
Как я могу сделать некоторые настройки для использования бродяг?
Установить 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:[email protected]:port"
export https_proxy="http://user:[email protected]:port"
vagrant plugin install vagrant-proxyconf
затем
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
Для Windows используйте набор вместо экспорта.
set http_proxy=http://user:[email protected]:port
set https_proxy=https://user:[email protected]: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
Установка proxyconf решит это, но за прокси вы не сможете установить плагин, просто используя команду vagrant plugin install
, Bundler вызовет ошибку.
установите свой прокси-сервер в своей среде, если вы используете систему типа unix
export http_proxy=http://user:[email protected]: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
Теперь верните свою виртуальную машину!
На хосте 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 plugin install vagrant-proxyconf --plugin-source http://rubygems.org
а затем вы можете указать параметры config.proxy.xxx в своем Vagrantfile, чтобы быть независимыми от переменных параметров среды
Вы захотите установить плагин 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, но в моем случае я использую Virtual Box в той же среде. В графическом интерфейсе Virtual Box есть опция, которую мне нужно включить, чтобы она работала. Располагается в настройках приложения 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
(Если вы этого не сделаете, просто установите их как переменные среды, как говорят другие ответы, и обратитесь к ним из env в директивах config.proxy.http(s).)
Некоторые специальные символы в пароле создают проблему в прокси. Либо избегайте их, либо избегайте использования специальных символов в пароле.
В 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"