เครือข่าย บริษัท ของฉันใช้พร็อกซี ดังนั้นเมื่อฉันใช้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"
นั่นคือhttps
หรือhttp
ในบรรทัดที่สอง
หากพร็อกซีของคุณต้องการการตรวจสอบความถูกต้องควรตั้งค่าตัวแปรสภาพแวดล้อมแทนที่จะเก็บรหัสผ่านของคุณใน 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 like
export http_proxy=http://user:password@host:port
หรือรับคำตอบโดยละเอียดที่นี่: จะใช้บันเดิลเลอร์หลังพร็อกซีได้อย่างไร
หลังจากนี้ตั้งค่า proxyconf
ตรวจจับการตั้งค่าพร็อกซีของคุณโดยอัตโนมัติและฉีดเข้าไปใน VM คนจรจัดทั้งหมดของคุณ
ติดตั้งปลั๊กอินพร็อกซี
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
ตอนนี้ขึ้น VM ของคุณ!
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 ใน 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 กล่าวไว้ข้างต้นแล้ว แต่ก็ไม่ได้ผลเนื่องจากยังคงพยายามติดต่อทับทิมในกรณีนั้น
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
กุญแจสำคัญคือ--plugin-clean-sources
สิ่งที่ทำให้ไม่พยายามเข้าถึงทับทิม
คำถามไม่ได้กล่าวถึงผู้ให้บริการ VM แต่ในกรณีของฉันฉันใช้ Virtual Box ภายใต้สภาพแวดล้อมเดียวกัน มีตัวเลือกใน Virtual Box GUI ที่ฉันต้องเปิดใช้เพื่อให้มันใช้งานได้ ตั้งอยู่ในเสมือนการตั้งค่าแอป Box: ไฟล์ >> Preferences ... >> พร็อกซี่ เมื่อกำหนดค่าแล้วก็สามารถทำงานได้โดยไม่มีปัญหา หวังว่าเคล็ดลับนี้จะช่วยคุณได้
หากคุณต้องการให้การกำหนดค่าพร็อกซีและการติดตั้งปลั๊กอินอยู่ใน 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) directives)
อักขระพิเศษบางตัวในรหัสผ่านสร้างปัญหาในพร็อกซี หลีกเลี่ยงพวกเขาหรือหลีกเลี่ยงการมีอักขระพิเศษในรหัสผ่าน
ใน PowerShell คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมhttp_proxyและhttps_proxyดังนี้:
$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"
ใน MS Windows สิ่งนี้เหมาะกับเรา:
set http_proxy=< proxy_url >
set https_proxy=< proxy_url >
และเทียบเท่าสำหรับ * nix:
export http_proxy=< proxy_url >
export https_proxy=< proxy_url >