คำแนะนำฉบับสมบูรณ์ในการติดตั้งและใช้งาน Vagrant บน Hyper-V ใน Windows 11

อัปเดตล่าสุด: 08/04/2025

  • Vagrant รองรับ Hyper-V จาก Windows 8.1 ขึ้นไปและรองรับสภาพแวดล้อมที่ทำซ้ำได้
  • การติดตั้งและกำหนดค่า Vagrant บน Hyper-V ต้องมีการตั้งค่าเครือข่ายและการจัดเตรียมเฉพาะ
  • Hyper-V ไม่อนุญาตให้ใช้คุณสมบัติบางอย่าง เช่น IP แบบคงที่ แต่ก็มีโซลูชันเสริม
  • ขอแนะนำให้ใช้อิมเมจ 'กล่อง' ที่เข้ากันได้กับ Hyper-V เพื่อหลีกเลี่ยงข้อผิดพลาดในการบูต
ติดตั้ง Vagrant บน Hyper-V-1

 

เริ่มแรกเลย ตั้งค่าสภาพแวดล้อมเสมือนอย่างรวดเร็วและเป็นระเบียบใน Windows ดูเหมือนว่าจะเป็นภารกิจที่ซับซ้อน โชคดีที่เรามีเครื่องมือเช่น Vagrant บน Hyper-V เพื่อให้มันเป็นไปได้ แม้ว่าการใช้งานจะเกี่ยวข้องกับ VirtualBox มากกว่า แต่ก็ยังเข้ากันได้ดีกับเทคโนโลยีเสมือนจริงที่รวมอยู่ใน Windows หลายเวอร์ชันแล้ว

ถึงกระนั้นการติดตั้งและกำหนดค่า คนเร่ร่อน ใน Hyper-V มันไม่ง่ายอย่างที่คิด มี ขั้นตอนสำคัญ และคุณสมบัติพิเศษของผู้ให้บริการเสมือนจริงของ Microsoft ที่คุณควรทราบ ในบทความนี้ เราจะให้ข้อมูลทั้งหมดที่คุณต้องการเพื่อเปิดตัวสภาพแวดล้อมเสมือนโดยปฏิบัติตามสูตรนี้โดยไม่มีปัญหาใดๆ

Vagrant คืออะไรและทำไมจึงต้องใช้ Hyper-V

คนเร่ร่อน มันคือ เครื่องมือโอเพนซอร์ส ที่อนุญาตให้ สร้างสภาพแวดล้อมเสมือนที่สามารถทำซ้ำได้และพกพาได้ผ่านทางไฟล์กำหนดค่าที่เรียบง่าย ได้รับการออกแบบมาสำหรับนักพัฒนา ผู้ดูแลระบบ หรือใครก็ตามที่ต้องการสภาพแวดล้อมที่สอดคล้องกันระหว่างคอมพิวเตอร์ต่างๆ พร้อมรองรับระบบปฏิบัติการหลายระบบ

ในส่วนของพวกเขา Hyper-V คือไฮเปอร์ไวเซอร์ดั้งเดิมของ Microsoftรวมอยู่ใน Windows 8.1 เวอร์ชัน Professional, Enterprise และ Education ขึ้นไป มันมีประสิทธิภาพและความเสถียรสูง โดยเฉพาะอย่างยิ่งมีประโยชน์เมื่อไฮเปอร์ไวเซอร์อื่นเช่น VirtualBox ขัดแย้งในสภาพแวดล้อม Windows สมัยใหม่

เหตุผลที่พบบ่อยที่สุดประการหนึ่งในการเลือกใช้ ไฮเปอร์-วี แทน VirtualBox คือมีผลิตภัณฑ์บางอย่างเช่น เดสก์ท็อป Docker หรือ WSL2 (ระบบย่อย Windows สำหรับ Linux) จำเป็นต้องเปิดใช้งาน Hyper-V ซึ่งจะทำให้เกิดความไม่เข้ากันกับ VirtualBox ทำให้ Hyper-V เป็นโซลูชันเดียวที่ถูกต้องหากเราไม่ต้องการเปิดใช้งานหรือปิดใช้งานบริการ

เนื้อหาพิเศษ - คลิกที่นี่  จะแปลงงบประมาณเป็นเอกสารประเภทอื่นโดยใช้ Anfix ได้อย่างไร?

ข้อดีของการใช้ Vagrant ร่วมกับ Hyper-V

การติดตั้ง Vagrant และการเปิดใช้งาน Hyper-V

ก่อนที่คุณจะเริ่มใช้ Vagrant บน Hyper-V ตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ของคุณเปิดใช้งาน Hyper-V แล้ว- โปรดระวังเนื่องจากโดยปกติแล้วจะไม่ได้เปิดใช้งานตามค่าเริ่มต้น คุณสามารถดำเนินการนี้ได้ด้วยตนเองจากส่วน “เปิดคุณลักษณะของ Windows” หรือใช้คำสั่งต่อไปนี้ใน PowerShell (ในฐานะผู้ดูแลระบบ):

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

หลังจากดำเนินการคำสั่งนี้แล้ว จำเป็นต้องรีสตาร์ทคอมพิวเตอร์ เพื่อให้การเปลี่ยนแปลงมีผลบังคับใช้

ในเวลาเดียวกันคุณจะต้อง ดาวน์โหลดและติดตั้ง Vagrant จากเว็บไซต์อย่างเป็นทางการ- ตัวติดตั้งมีทุกสิ่งที่คุณต้องการเพื่อใช้คำสั่งได้ vagrant โดยตรงจากเครื่องปลายทางใดก็ได้

เมื่อติดตั้งแล้ว คุณสามารถตรวจสอบว่าทุกอย่างถูกต้องโดยรันคำสั่งต่อไปนี้ในเทอร์มินัล:

vagrant --version

คำสั่งนี้ควรส่งคืนเวอร์ชันที่ติดตั้ง เช่น แวกแรนท์ 2.4.0.

ขั้นตอนที่ 1: เตรียมสภาพแวดล้อมฐาน

Vagrant นั้นใช้ "กล่อง" เป็นพื้นฐาน ซึ่งเป็นอิมเมจพื้นฐานของระบบปฏิบัติการที่ติดตั้งไว้ล่วงหน้า- ข้อมูลเหล่านี้จะดาวน์โหลดโดยอัตโนมัติจากดัชนีสาธารณะที่เรียกว่า Vagrant Cloud ในการเริ่มต้น คุณต้องสร้างโฟลเดอร์ที่คุณจะใช้งานโปรเจ็กต์ของคุณ ตัวอย่างเช่น:

mkdir mi_proyecto_vagrant
cd mi_proyecto_vagrant
vagrant init generic/alpine36

คำสั่งนี้ จะสร้างไฟล์ชื่อ Vagrantfile ซึ่งเป็นที่ที่การกำหนดค่าเครื่องเสมือนทั้งหมดอยู่ ภายในนั้นคุณจะต้องปรับพารามิเตอร์หลักบางตัวเพื่อใช้ Hyper-V

Vagrant บน Hyper-V

การกำหนดค่าผู้ให้บริการ Hyper-V

โดยค่าเริ่มต้น Vagrant จะพยายามใช้ VirtualBox เป็นผู้ให้บริการ- ในการใช้ Hyper-V คุณสามารถระบุสิ่งนี้ได้ทุกครั้งโดยรัน:

vagrant up --provider=hyperv

หรือตั้งค่า Hyper-V เป็นผู้ให้บริการเริ่มต้นโดยการตั้งค่าตัวแปรสภาพแวดล้อม:

$env:VAGRANT_DEFAULT_PROVIDER="hyperv"

ขั้นตอนนี้สามารถทำได้จาก PowerShell หรือโดยตรงในตัวแปรสภาพแวดล้อมระบบของคุณ

เนื้อหาพิเศษ - คลิกที่นี่  ฉันจะชำระเงินบน Substack ได้อย่างไร?

ภายใน Vagrantfile ขอแนะนำให้ระบุผู้ให้บริการด้วยการตั้งค่าที่เฉพาะเจาะจง- ตัวอย่างพื้นฐานได้แก่:

Vagrant.configure("2") do |config|
  config.vm.box = "generic/alpine36"
  config.vm.provider "hyperv" do |h|
    h.vmname = "mi_vm_hyperv"
    h.memory = 2048
    h.cpus = 2
  end
end

พารามิเตอร์เหล่านี้ช่วยให้คุณกำหนด RAM, จำนวนคอร์ และชื่อเครื่องที่จะมีใน Hyper-V.

เครือข่ายและการเชื่อมต่อใน Hyper-V

จุดอ่อนประการหนึ่งของ Hyper-V ใน Vagrant คือมันไม่ได้กำหนดค่าเครือข่ายโดยอัตโนมัติ- ด้วยเหตุนี้ คุณจะต้องเลือก vSwitch ด้วยตนเองโดยใช้การเชื่อมต่อภายนอกที่สร้างไว้แล้วใน Hyper-V

หากต้องการเชื่อมโยงเครือข่ายส่วนตัวหรือเลือก vSwitch เฉพาะ คุณสามารถใช้:

config.vm.network "private_network", bridge: "NombreDelvSwitch"

โปรดจำไว้ว่า Hyper-V ไม่อนุญาตให้คุณกำหนดค่า IP แบบคงที่จาก Vagrant ได้โดยตรงดังนั้นจึงต้องตั้งค่าโดยใช้สคริปต์หรือโดยการแก้ไขการตั้งค่าระบบปฏิบัติการของแขก

 

ไฮเปอร์-วี

การเข้าถึงเครื่อง: SSH และเครื่องมืออื่น ๆ

แม้ว่าอาจดูเหมือนว่าไม่สามารถใช้ SSH บน Windows ได้ Vagrant มีไคลเอนต์ SSH ในตัวเพื่อให้คุณสามารถเข้าถึงได้โดยไม่ต้องติดตั้งโปรแกรมเพิ่มเติม

เข้าสู่ระบบด้วย:

vagrant ssh

คุณยังสามารถใช้ PuTTY ได้ แต่ในกรณีนั้นคุณจะต้อง แปลงคีย์ส่วนตัวที่สร้างโดย Vagrant เป็นรูปแบบ PPK (ด้วย PuTTYgen) เนื่องจากไม่ได้รับการรองรับโดยตรง กุญแจอยู่ที่:

.vagrant/machines/default/hyperv/private_key

วิธีนี้จะช่วยให้คุณสามารถเชื่อมต่อด้วยตนเองจากไคลเอนต์ SSH ที่คุณต้องการ

การจัดเตรียมด้วยสคริปต์

ประโยชน์ที่ใหญ่ที่สุดประการหนึ่งของ Vagrant คือการรองรับ การจัดเตรียมอัตโนมัติด้วยสคริปต์- คุณสามารถเปิดใช้สคริปต์เชลล์สำหรับการติดตั้งซ้ำได้:

config.vm.provision "shell", path: "bootstrap.sh"

ภายในไฟล์ bootstrap.sh คุณสามารถรวมคำแนะนำเช่น:

apk update
apk add git

นี่จะทำงาน ครั้งแรกที่สร้าง VM- หากคุณต้องการนำสคริปต์มาใช้ใหม่ในภายหลัง คุณสามารถทำได้ดังนี้:

vagrant reload --provision

การจัดเตรียม VM ด้วยสคริปต์

การทำงานกับเครื่องจักรหลายเครื่อง

Vagrant ช่วยให้คุณสามารถจัดการเครื่องมากกว่าหนึ่งเครื่องจากไฟล์เดียว ซึ่งมีประโยชน์สำหรับห้องปฏิบัติการหรือคลัสเตอร์เซิร์ฟเวอร์ การตั้งค่าทั่วไปของห้องปฏิบัติการอาจประกอบด้วยคำจำกัดความหลายประการ:

Vagrant.configure("2") do |config|
  config.vm.define "master" do |master|
    master.vm.box = "bento/ubuntu-20.04"
    master.vm.hostname = "master"
    master.vm.network :private_network, ip: "10.0.0.10"
  end

  (1..2).each do |i|
    config.vm.define "node#{i}" do |node|
      node.vm.box = "bento/ubuntu-20.04"
      node.vm.hostname = "node#{i}"
      node.vm.network :private_network, ip: "10.0.0.#{i + 10}"
    end
  end

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y avahi-daemon libnss-mdns
  SHELL
end

ซึ่งจะทำให้เครื่องจักรสามารถจดจำกันและกันได้ด้วยชื่อต่างๆ เช่น node1.ท้องถิ่น o มาสเตอร์.ท้องถิ่น ขอบคุณการใช้ mDNS

เนื้อหาพิเศษ - คลิกที่นี่  จะค้นหาเนื้อหาที่ดาวน์โหลดจาก Spotify ได้อย่างไร?

เคล็ดลับประสิทธิภาพและความเข้ากันได้

ประสิทธิภาพของ Vagrant บน Hyper-V โดยทั่วไปถือว่าดี แต่จะขึ้นอยู่กับ:

  • พลังของทีมเจ้าภาพของคุณ (RAM, CPU, ประเภทของดิสก์)
  • ภาพฐานที่ใช้ (ควรใช้กล่องที่ได้รับการเพิ่มประสิทธิภาพดีกว่า)
  • จำนวนเครื่องจักรที่ทำงานในเวลาเดียวกัน
  • การใช้งานดิสก์แบบแยกส่วนและการจัดเตรียมแบบบาง

แนวทางปฏิบัติทั่วไปในการเขียนสคริปต์หลายสภาพแวดล้อมคือการสร้าง กล่องส่วนบุคคล ซึ่งรวมหมวดหมู่ทั้งหมดของคุณไว้แล้ว: เครื่องมือ บริการ เส้นทาง ฯลฯ ซึ่งจะช่วยหลีกเลี่ยงการต้องติดตั้งสิ่งเดียวกันซ้ำในแต่ละอินสแตนซ์

การใช้ Vagrant บน Hyper-V บน Windows ถือว่ามีความเป็นไปได้อย่างแน่นอนแม้ว่าจะมีข้อจำกัดบางประการ แต่ก็สามารถแก้ไขได้ด้วยการปรับเปลี่ยนเล็กๆ น้อยๆ Hyper-V มอบความแข็งแกร่งและความเข้ากันได้กับเทคโนโลยี Microsoft สมัยใหม่ ในขณะที่ Vagrant ช่วยอำนวยความสะดวกในการทำงานอัตโนมัติและการพกพาของสภาพแวดล้อมการพัฒนา