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?
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?
vagrant plugin install vagrant-proxyconf
.
Câu trả lời:
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"
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.*
.
config.proxy.https = "https://yourproxy:8080"
đó là https
hay http
trong dòng thứ hai
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
export VAGRANT_HTTPS_PROXY=${https_proxy}
trong các hướng dẫn Mac / Linux.
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
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!
vagrant reload
sẽ 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.
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.
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
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
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.gem
nà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 đó
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
Chìa khóa là --plugin-clean-sources
nguyên nhân khiến nó không cố gắng truy cập rubygem
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.
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).)
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.