Сеть моей компании использует прокси. Поэтому, когда я использую vagrant up
, он показал мне ошибку разрешения 401.
Как я могу сделать некоторые настройки для использования бродяг?
Сеть моей компании использует прокси. Поэтому, когда я использую vagrant up
, он показал мне ошибку разрешения 401.
Как я могу сделать некоторые настройки для использования бродяг?
vagrant plugin install vagrant-proxyconf
.
Ответы:
Установите 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"
config.env_proxy.*
устарела с версии 2.0 и была заменена на config.proxy.*
.
config.proxy.https = "https://yourproxy:8080"
is that https
or http
in the second line
Если ваш прокси требует аутентификации, лучше установить переменную среды, а не хранить пароль в 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
export VAGRANT_HTTPS_PROXY=${https_proxy}
Указать в инструкциях для Mac / Linux.
Установка proxyconf решит эту проблему, но за прокси вы не можете установить плагин, просто используя команду vagrant plugin install
, Bundler вызовет ошибку.
установите прокси в своей среде, если вы используете unix-подобную систему
export http_proxy=http://user:password@host:port
или получите более подробный ответ здесь: Как использовать бандлер за прокси?
после этого настройте proxyconf
Автоматическое определение настроек вашего прокси и внедрение их во все ваши бродячие виртуальные машины
установить плагин прокси
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
теперь вверх свою виртуальную машину!
vagrant reload
будет исправлено, и может быть лучше всего для автоматического обнаружения настроек прокси-сервера при подключении к новым сетям и либо оповещения пользователя, либо обеспечения бесперебойной работы. tmatilai.github.io/vagrant-proxyconf упомянул отключение, но не уверен, что он решает эти вопросы.
На хосте Windows
открыть командную строку CMD;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
Замените адрес и порт в приведенных выше фрагментах на все, что подходит для вашей ситуации. Вышеуказанное будет оставаться установленным, пока вы не закроете приглашение CMD. Если это сработает для вас, подумайте о добавлении их на постоянной основе в переменные среды, чтобы вам не приходилось устанавливать их каждый раз, когда вы открываете новое приглашение CMD.
На окнах вы должны установить переменную для определения настроек прокси, загрузить плагин 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.
Чтобы получить полное представление, ознакомьтесь с этой записью в блоге о настройке бродяг за корпоративным прокси-сервером.
plugin-source
для установки с локального GEM, но мне еще не удалось заставить это работать в Windows. Я не уверен, что мой синтаксис неправильный, например file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
? Я также пробовал подход, о котором упоминал @Martin выше, это тоже не сработало, так как в этом случае он все еще пытается связаться с rubygems
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
ключ в том, --plugin-clean-sources
что заставляет его не пытаться получить доступ к rubygems
В вопросе не упоминается поставщик виртуальных машин, но в моем случае я использую 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).)
Некоторые специальные символы в пароле создают проблемы в прокси. Либо избегайте их, либо избегайте использования специальных символов в пароле.