Мережа моєї компанії використовує проксі. Тому коли я використовуюvagrant up
, це показало мені помилку дозволу 401.
Як я можу налаштувати використання бродяги?
Мережа моєї компанії використовує проксі. Тому коли я використовуюvagrant up
, це показало мені помилку дозволу 401.
Як я можу налаштувати використання бродяги?
vagrant plugin install vagrant-proxyconf
.
Відповіді:
Встановіть proxyconf:
vagrant plugin install vagrant-proxyconf
Налаштуйте файл Vagrant:
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"
це https
чи http
у другому рядку
Якщо ваш проксі вимагає автентифікації, краще встановити змінну середовища, а не зберігати ваш пароль у файлі Vagrant. Також ваш файл Vagrant може бути використаний іншими, хто не стоїть за проксі.
Для 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
додайте цю конф. до вас приватну / користувацьку 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.
У 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 у вашому файлі Vagrant, щоб вони були незалежними від змінних параметрів середовища
Ви захочете встановити плагін 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
що змушує його не намагатися отримати доступ до рубімів
Питання не згадує про постачальника віртуальних машин, але в моєму випадку я використовую Virtual Box в тому ж середовищі. У графічному інтерфейсі Virtual Box є опція, яку мені потрібно було ввімкнути, щоб вона працювала. Розташований у налаштуваннях програми Virtual Box: Файл >> Налаштування ... >> Проксі . Після налаштування цього я міг працювати без проблем. Сподіваюся, ця порада також може допомогти вам, хлопці.
Якщо ви дійсно хочете, щоб ваші конфігурації проксі-сервера та установки плагінів були у вашому файлі Vagrant, наприклад, якщо ви створюєте файл Vagrant лише для вашого корпоративного середовища і не можете мати користувачів, які редагують змінні середовища, це була відповідь для мене:
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).)
Деякі спеціальні символи в паролі створюють проблему в проксі. Або уникніть їх, або уникайте спеціальних символів у паролі.