Як використовувати vagrant в проксі-середовищі?


92

Мережа моєї компанії використовує проксі. Тому коли я використовуюvagrant up , це показало мені помилку дозволу 401.

Як я можу налаштувати використання бродяги?


1
ти погуглив за це?
Ghost Answer

На жаль, я цього не зробив, тепер я знаю vagrant plugin install vagrant-proxyconf.
ithelloworld

Але після того, як я встановив і встановив свою URL-адресу проксі-сервера у файл конфігурації, результат був однаковим. 401
ithelloworld

Відповіді:


104

Встановіть 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"

4
config.env_proxy.*застаріла з версії 2.0 і була замінена на config.proxy.*.
Томалак

config.proxy.https = "https://yourproxy:8080"це httpsчи httpу другому рядку
eldos

2
це може бути і те, і інше. У моїй компанії http і https проходить через той самий проксі, який є в http
Alejandro Moreno

30
Гаразд, коли я запускаю 'vagrant plugin install vagrant-proxyconf', він потрапляє на мій проксі?
Марк Бродхерст

9
Зазначимо лише одне, якщо ви стоїте за проксі, ви не можете встановлювати плагіни.
user3426711

87

Якщо ваш проксі вимагає автентифікації, краще встановити змінну середовища, а не зберігати ваш пароль у файлі 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

1
Крім того, якщо ви не хочете, щоб воно залишалося у вашому середовищі, ви можете зробити VAGRANT_HTTP_PROXY = " user: password @ host: port " вагрантним (без експорту або встановлення) для цієї змінної середовища лише за однією командою.
maccam912

4
Чудове рішення, оскільки не вимагає розміщення налаштувань проксі-сервера у файлі Vagrant там, де вони явно не належать
emrass

7
Windows Powersehell v6.0: $ env: http_proxy = " user: password @ host: port " $ env: https_proxy = " user: password @ host: port " vagrant plugin встановити vagrant-proxyconf
Xolani

1
Для тих, хто використовує Windows Git Bash, використовуйте інструкції для Mac / Linux (у Bash). Наприклад: експорт http_proxy = " user: password @ host: port "
Xolani

1
Ви забули (?) Про це export VAGRANT_HTTPS_PROXY=${https_proxy}в інструкціях для Mac / Linux.
Том Хандт,

53

Встановлення proxyconf це вирішить, але позаду проксі ви не можете встановити плагін, просто використовуючи команду vagrant plugin install, Bundler викличе помилку.

встановіть свій проксі у своєму середовищі, якщо ви використовуєте систему, подібну до unix

export http_proxy=http://user:password@host:port

або отримати більш детальну відповідь тут: Як використовувати пакет за проксі?

після цього налаштуйте proxyconf


10
У вікнах я зробив те, що ви пропонуєте, але використав "SET" замість "export". Працював, як очікувалося, без внесення змін до Vagrantfile.
Даніель Вотрус

28

Автоматично визначайте свої налаштування проксі-сервера та вводьте їх у всі ваші бродячі віртуальні машини

встановити плагін проксі

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

зараз ваша ВМ!


1
Мені подобається ця відповідь, оскільки вона повторно використовує існуючі змінні env HTTP_PROXY, які я вже оголосив у своїй хост-ОС. Смерть вирізати-вставити !!
ripvlan

Виглядає як хороший шлях вперед. А як щодо його відключення при виході за межі проксі? Встановив, що плагін-бродяга пробивав гостьовий Linux у декількох місцях, щоб змусити працювати різні різні інструменти / програми. Чи є простий спосіб відключити? Такий, який також буде принаймні відкинутий від прапорця командного рядка, і один vagrant reloadвиправить, і найкраще буде автоматично визначати параметри входу / виходу проксі-сервера при підключенні до нових мереж, або попереджати користувача, або змусити його працювати безперебійно. tmatilai.github.io/vagrant-proxyconf згадав про відключення, але не впевнений, що він стосується цих моментів.
arntg

Не впевнений у розумінні, але цей фрагмент перевіряє наявність http_proxy env var для налаштування плагіна проксі. Якщо ви не використовуєте * _proxy env, його слід `` не активувати '' (?)
небезпечно

11

На хості Windows

відкрити запит CMD;

set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443

Замініть адресу та порт у наведених вище фрагментах на те, що підходить для вашої ситуації. Вищевикладене буде встановлено, доки ви не закриєте запит CMD. Якщо це працює для вас, розгляньте можливість їх постійного додавання до змінних середовища, щоб вам не потрібно було встановлювати їх кожного разу, коли ви відкриваєте нове запит CMD.


9

У 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, щоб вони були незалежними від змінних параметрів середовища


Просто додатковий параметр (rubygem від https до http), щоб уникнути помилок під час перевірки сертифікатів SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

це краще рішення, ніж попередні, тому що для цього більше нічого не потрібно. Інші рішення (встановити плагін) повинні спочатку встановити безкоштовний доступ до Інтернету.
Рауль Луна

5

Ви захочете встановити плагін 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

Для повної прогулянки подивіться цей запис у блозі про те, як встановити бродягу за корпоративним проксі


Мені було б цікаво дізнатися, чому за це було проголосовано. Тут пояснюється, як вирішити проблему, а також як вирішити потенційні інші проблеми, з якими ви можете зіткнутися
Rune FS

хіба це майже однакова відповідь, яку вже подавали кілька разів? крім того, в ньому не сказано, що робити, щоб отримати плагіни-бродяги, якщо ви є корпоративним проксі-сервером, а лише зазначено, що це може бути проблемою, а потім пов’язано деінде.
eis

Схоже, зараз так і повинно бути vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Джерело
Мартін,

Чудова ідея використовувати plugin-sourceдля встановлення з локального GEM, але мені ще не вдалося змусити це працювати в Windows. Я не впевнений, що мій синтаксис неправильний, наприклад file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem? Я також спробував підхід, про який згадував вище @Martin, це також не спрацювало, оскільки в цьому випадку він все ще намагається зв’язатись з rubygems
Адам Берлі

2
Це спрацювало для мене: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesголовне, --plugin-clean-sourcesщо змушує його не намагатися отримати доступ до рубімів
Адам Берлі

2

Питання не згадує про постачальника віртуальних машин, але в моєму випадку я використовую Virtual Box в тому ж середовищі. У графічному інтерфейсі Virtual Box є опція, яку мені потрібно було ввімкнути, щоб вона працювала. Розташований у налаштуваннях програми Virtual Box: Файл >> Налаштування ... >> Проксі . Після налаштування цього я міг працювати без проблем. Сподіваюся, ця порада також може допомогти вам, хлопці.


1

Якщо ви дійсно хочете, щоб ваші конфігурації проксі-сервера та установки плагінів були у вашому файлі 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).)


1

Деякі спеціальні символи в паролі створюють проблему в проксі. Або уникніть їх, або уникайте спеціальних символів у паролі.


1

У PowerShell ви можете встановити змінні середовища http_proxy та https_proxy так:

$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"

0

У MS Windows це працює для нас:

set http_proxy=< proxy_url >
set https_proxy=< proxy_url >

І еквівалент для * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.