Làm thế nào để sử dụng vagrant trong môi trường proxy?


92

Mạng của công ty tôi đang sử dụng proxy. Vì vậy, khi tôi sử dụng vagrant up, nó cho tôi thấy lỗi quyền 401.

Làm cách nào tôi có thể thực hiện một số cài đặt để sử dụng vagrant?


1
bạn đã tìm kiếm cái này chưa?
Ghost Answer

Xin lỗi, tôi không biết vagrant plugin install vagrant-proxyconf.
ithelloworld

Nhưng sau khi tôi cài đặt và setted url proxy của tôi để tập tin cấu hình, kết quả là same.401
ithelloworld

Câu trả lời:


104

Cài đặt proxyconf:

vagrant plugin install vagrant-proxyconf

Định cấu hình Vagrantfile của bạn:

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.*không được dùng nữa kể từ phiên bản 2.0 và đã được thay thế bằng config.proxy.*.
Tomalak

config.proxy.https = "https://yourproxy:8080"đó là httpshay httptrong dòng thứ hai
trường học

2
nó có thể là cả hai. Trong công ty tôi http và https đi qua proxy cùng mà là ở http
Alejandro Moreno

30
Ok khi tôi chạy 'plugin vagrant cài đặt vagrant-proxyconf', nó có truy cập proxy của tôi không?
Mark Broadhurst

9
Chỉ cần đề cập một điều, nếu bạn đang sử dụng proxy, bạn không thể cài đặt plugin.
user3426711

87

Nếu proxy của bạn yêu cầu xác thực, tốt hơn nên đặt biến môi trường thay vì lưu trữ mật khẩu của bạn trong Vagrantfile. Ngoài ra, Vagrantfile của bạn có thể được sử dụng bởi những người khác dễ dàng, những người không đứng sau proxy.

Đối với Mac / Linux (trong Bash)

export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf

sau đó

export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

Đối với Windows, sử dụng set thay vì export.

set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf

sau đó

set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

1
Ngoài ra, nếu bạn không muốn nó ở trong môi trường của mình, bạn có thể thực hiện VAGRANT_HTTP_PROXY = " user: password @ host: port " lên lang thang (không cần xuất hoặc thiết lập) cho biến môi trường đó chỉ bằng một lệnh.
maccam912

4
Lớn giải pháp vì nó không yêu cầu đặt các thiết lập proxy trong Vagrantfile nơi họ làm rõ ràng không thuộc về
emrass

7
Windows Powersehell v6.0: $ env: http_proxy = " user: password @ host: port " $ env: https_proxy = " user: password @ host: port " plugin vagrant cài đặt vagrant-proxyconf
Xolani 15/02/18

1
Đối với những người sử dụng Windows Git Bash, hãy sử dụng hướng dẫn Mac / Linux (trong Bash). Ví dụ: export http_proxy = " user: password @ host: port "
Xolani 15/02/18

1
Bạn đã quên (?) Để export VAGRANT_HTTPS_PROXY=${https_proxy}trong các hướng dẫn Mac / Linux.
Tom Hundt

53

Cài đặt proxyconf sẽ giải quyết được điều này, nhưng đằng sau proxy, bạn không thể cài đặt plugin chỉ đơn giản bằng lệnh vagrant plugin install, Bundler sẽ gây ra lỗi.

đặt proxy của bạn trong môi trường của bạn nếu bạn đang sử dụng hệ thống giống như unix

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

hoặc nhận câu trả lời chi tiết hơn tại đây: Làm thế nào để sử dụng Bundler đằng sau proxy?

sau khi thiết lập proxyconf


10
Trên windows, tôi đã làm những gì bạn đề xuất nhưng sử dụng "SET" thay vì "export". Hoạt động như mong đợi mà không thực hiện bất kỳ thay đổi nào đối với Vagrantfile.
Daniel Watrous,

28

Tự động phát hiện cài đặt proxy của bạn và đưa chúng vào tất cả máy ảo ảo của bạn

cài đặt plugin proxy

vagrant plugin install vagrant-proxyconf

thêm tâm sự này vào VagrantFile riêng tư / người dùng của bạn (nó sẽ được thực thi cho tất cả các dự án của bạn):

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

bây giờ lên máy ảo của bạn!


1
Tôi thích câu trả lời này vì nó sử dụng lại các biến env HTTP_PROXY hiện có mà tôi đã khai báo trên hệ điều hành chủ của mình. Chết để cắt dán !!
ripvlan

Có vẻ như một con đường tốt về phía trước. Còn việc tắt nó khi ra ngoài proxy thì sao? Nhận thấy rằng plugin vagrant đã tấn công linux khách ở nhiều nơi để làm cho nhiều công cụ / ứng dụng khác nhau hoạt động. Có cách nào đơn giản để vô hiệu hóa không? Điều đó ít nhất cũng sẽ được lật khỏi cờ dòng lệnh và một nút duy nhất vagrant reloadsẽ khắc phục được và có thể là tốt nhất để phát hiện cài đặt proxy vào / ra tự động khi kết nối với các mạng mới và cảnh báo người dùng hoặc làm cho nó hoạt động liền mạch. tmatilai.github.io/vagrant-proxyconf đã đề cập đến việc vô hiệu hóa, nhưng không chắc nó giải quyết những điểm này.
arntg

Không chắc bạn hiểu nhưng đoạn mã này kiểm tra sự tồn tại của http_proxy env var để thiết lập plugin proxy. Nếu bạn không sử dụng * _proxy ENV nó nên được 'không được kích hoạt' (?)
quazardous

11

Trên máy chủ Windows

mở dấu nhắc CMD;

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

Thay thế địa chỉ và cổng trong các đoạn mã trên thành bất kỳ địa chỉ nào phù hợp với tình huống của bạn. Ở trên sẽ vẫn được đặt cho đến khi bạn đóng dấu nhắc CMD. Nếu nó phù hợp với bạn, hãy xem xét thêm chúng vĩnh viễn vào các biến môi trường của bạn để bạn không phải đặt chúng mỗi khi mở lời nhắc CMD mới.


9

Trên windows , bạn phải đặt một biến để chỉ định cài đặt proxy, tải xuống plugin vagrant-proxyconf: (thay {PROXY_SCHEME} (http: // hoặc https: //), {PROXY_IP} và {PROXY_PORT} bằng các giá trị phù hợp)

set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}

Sau đó, bạn có thể thêm plugin để mã hóa cài đặt proxy của mình trong tệp vagrant

vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org

và sau đó, bạn có thể cung cấp cài đặt config.proxy.xxx trong Vagrantfile của mình để độc lập với các biến cài đặt môi trường


Chỉ cần một tham số thêm vào một số (rubygem từ https đến http) để tránh lỗi khi xác minh chứng chỉ SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

đây là giải pháp tốt hơn những giải pháp trước, bởi vì giải pháp này không cần bất cứ điều gì khác. Các giải pháp khác (cài đặt plugin) trước tiên cần đặt quyền truy cập Internet miễn phí để làm như vậy.
Raul Luna

5

Bạn sẽ muốn cài đặt plugin proxyconf vì điều này làm cho việc định cấu hình proxy cho các máy khách khá dễ dàng trong VagrantFile

config.proxy.http     = "http://proxy:8888"
config.proxy.https    = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"

Tuy nhiên, có một số điều vẫn có thể xảy ra. Thứ nhất, có thể bạn không thể cài đặt các plugin vagrant sau proxy. Nếu đúng như vậy, bạn nên tải xuống nguồn, ví dụ: từ rubygems.org và cài đặt từ nguồn

$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem

Nếu bạn giải quyết được vấn đề đó, bạn có thể may mắn đứng sau một proxy NTLM, có nghĩa là nếu bạn đang sử dụng * nix trên các máy khách của mình thì bạn vẫn còn một số cách để thực hiện, vì xác thực NTLM không được hỗ trợ. Có nhiều cách giải quyết vấn đề đó. Tôi đã sử dụng CNTLM để giải quyết một phần của câu đố. Nó hoạt động như chất kết dính giữa các giao thức ủy quyền tiêu chuẩn và NTLM

Để có hướng dẫn đầy đủ, hãy xem mục blog này về cách thiết lập lang thang đằng sau proxy công ty


Tôi muốn biết lý do tại sao điều này bị bỏ phiếu. Nó giải thích làm thế nào để giải quyết vấn đề này và cũng có thể làm thế nào để giải quyết các vấn đề tiềm năng khác mà bạn có thể gặp
Rune FS

Đây không phải là câu trả lời giống nhau đã được cung cấp nhiều lần sao? Ngoài ra, nó không nói phải làm gì để có được các plugin không hoạt động nếu bạn đang sử dụng proxy của công ty, nó chỉ nói rằng đó sẽ là một vấn đề và sau đó liên kết ở nơi khác.
eis

Có vẻ như bây giờ nó nên được vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Nguồn
Martin

Ý tưởng tuyệt vời để sử dụng plugin-sourceđể cài đặt từ GEM cục bộ, nhưng tôi chưa quản lý để làm cho nó hoạt động trên Windows. Tôi không chắc liệu cú pháp của mình có sai không, như thế file://C:/path1/path2/vagrant-proxyconf-1.5.2.gemnào? Tôi cũng đã thử các cách tiếp cận mà @ Martin đề cập ở trên, điều này cũng không làm việc như nó vẫn cố gắng để rubygems liên lạc trong trường hợp đó
Adam Burley

2
Điều này đã hiệu quả với tôi: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesChìa khóa là --plugin-clean-sourcesnguyên nhân khiến nó không cố gắng truy cập rubygem
Adam Burley

2

Câu hỏi không đề cập đến Nhà cung cấp máy ảo nhưng trong trường hợp của tôi, tôi sử dụng Hộp ảo trong cùng một môi trường. Có một tùy chọn trong Virtual Box GUI mà tôi cần bật để làm cho nó hoạt động. Nằm trong tùy chọn ứng dụng Hộp ảo: Tệp >> Tùy chọn ... >> Proxy . Sau khi tôi định cấu hình điều này, tôi có thể làm việc mà không gặp sự cố. Hy vọng thủ thuật này cũng có thể giúp ích cho các bạn.


1

Nếu bạn thực sự muốn cấu hình proxy và cài đặt plugin có trong Vagrantfile của mình, ví dụ: nếu bạn đang tạo Vagrantfile chỉ cho môi trường công ty của mình và không thể để người dùng chỉnh sửa các biến môi trường, thì đây là câu trả lời cho tôi:

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

(Nếu không, chỉ cần đặt chúng làm biến môi trường như các câu trả lời khác nói và tham chiếu chúng từ env trong chỉ thị config.proxy.http (s).)


1

Một số ký tự đặc biệt trong mật khẩu tạo ra sự cố trong proxy. Thoát khỏi chúng hoặc tránh có các ký tự đặc biệt trong mật khẩu.


1

Trong PowerShell, bạn có thể đặt các biến môi trường http_proxyhttps_proxy như sau:

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

0

Trong MS Windows, điều này làm việc cho chúng tôi:

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

Và tương đương cho * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.