Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

Vagrant virtualization - คู่มือเบื้องต้น

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

แนวคิดมีดังนี้:คุณซ่อนคำสั่งที่สำคัญและนำเสนออินเทอร์เฟซที่รวมเป็นหนึ่ง จากนั้นผูกคำศัพท์เฉพาะบางคำ เช่น คลาวด์ และ whatnot และมันจะกลายเป็นเทคโนโลยีใหม่มาแรงที่ทุกคนพูดถึง คล้ายกับ OpenStack, OpenShift, OpenCloud และชื่อแฟนซีอื่นๆ อันที่จริง หากคุณสามารถโยนชื่อทิ้งอื่นๆ เช่น PostgreSQL, Jenkins และ Node.js ได้ คุณจะได้รับคะแนนพิเศษสำหรับการเป็นคนทันสมัย ​​ฮิปๆ และเท่ แต่นอกเหนือจากการประชดประชัน เรามาดูกันว่าเครื่องมือนี้สามารถทำอะไรได้บ้าง และมีประโยชน์ คุ้มค่า และสนุกหรือไม่

คำพูดเป็นสิ่งที่จำเป็นมาก

เกริ่นนำเล็กน้อยเพื่อให้บริบทแก่คุณ Vagrant ได้รับการออกแบบมาเพื่อลดความซับซ้อนของการทดสอบซอฟต์แวร์ การพัฒนา และการจัดการทรัพยากรการจำลองเสมือนในสภาพแวดล้อมที่หลากหลายและรวดเร็ว ในขั้นต้น มันสามารถทำงานร่วมกับ VirtualBox เท่านั้น ซึ่งไม่ใช่ไฮเปอร์ไวเซอร์ที่เป็นตัวเลือกในอุตสาหกรรม แต่เมื่อเร็ว ๆ นี้ โปรแกรมยังรองรับเทคโนโลยีอื่น ๆ เช่น VMware, KVM และเพื่อน ๆ และมาพร้อมกับเคล็ดลับการรวมที่ดี

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

การตั้งค่า

เพื่อให้น่าสนใจยิ่งขึ้น ฉันจะไม่สาธิตสิ่งนี้บน Linux เดี๋ยวก่อน w00t เราจะใช้ Windows เพียงเพื่อเพิ่มความหลากหลาย ในบทความติดตามผล และเชื่อฉันเถอะว่าจะมีบทความมากมาย เราจะกลับไปใช้ Linux แต่ที่นี่ ฉันต้องการแสดงให้คุณเห็นว่าตามแนวคิดแล้ว มันไม่ได้สร้างความแตกต่างเลยจริงๆ

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

พเนจรขึ้น

อย่างไรก็ตาม หากคุณไม่ได้เตรียมและเริ่มต้นสภาพแวดล้อมการทำงาน คุณจะได้รับข้อผิดพลาดที่ค่อนข้างน่าเกลียด:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ขึ้นไป
จำเป็นต้องมีสภาพแวดล้อม Vagrant หรือเครื่องเป้าหมายเพื่อรันสิ่งนี้
สั่งการ. เรียกใช้ 'vagrant init' เพื่อสร้างสภาพแวดล้อม Vagrant ใหม่ หรือรับ ID ของเครื่องเป้าหมายจาก `vagrant global-status` เพื่อเรียกใช้คำสั่งนี้ ตัวเลือกสุดท้ายคือเปลี่ยนเป็นไดเร็กทอรีที่มี Vagrantfile แล้วลองอีกครั้ง

หลังจากที่คุณเริ่มต้นสภาพแวดล้อมแล้ว คุณสามารถเริ่มทำงานอย่างจริงจังได้

แต่อีกครั้ง เราต้องต่อสู้กับข้อผิดพลาดที่น่าเกลียด:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ขึ้นไป
นำเครื่อง 'default' ขึ้นกับผู้ให้บริการ 'virtualbox' ...
==> ค่าเริ่มต้น:ไม่พบกล่อง 'ฐาน' พยายามหาและติดตั้ง...
ค่าเริ่มต้น:ผู้ให้บริการกล่อง:virtualbox
ค่าเริ่มต้น:เวอร์ชันกล่อง:>=0
==> ค่าเริ่มต้น:การเพิ่มกล่อง 'ฐาน' (v0) สำหรับผู้ให้บริการ:virtualbox
ค่าเริ่มต้น:กำลังดาวน์โหลด:ฐาน
ค่าเริ่มต้น:
เกิดข้อผิดพลาดขณะดาวน์โหลดไฟล์ระยะไกล ข้อผิดพลาด
ข้อความ (ถ้ามี) จะทำซ้ำด้านล่าง โปรดแก้ไขข้อผิดพลาดนี้แล้วลองอีกครั้ง

ไม่สามารถเปิดไฟล์ /HashiCorp/Vagrant/bin/base
PS C:\HashiCorp\คนจรจัด\bin>

ตามค่าเริ่มต้น Vagrant เวอร์ชัน Windows จะพยายามเริ่มเครื่องเสมือนจากอิมเมจพื้นฐาน รูปภาพนั้นจะไม่พร้อมใช้งาน ซึ่งเป็นสาเหตุที่คำสั่ง up จะล้มเหลวเมื่อคุณเรียกใช้งานโดยไม่มีการเตรียมการใดๆ ล่วงหน้า

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

กล่องคนจรจัดเพิ่ม hashicorp/base

หากคุณระบุรูปภาพที่ไม่มีอยู่จริง คุณจะได้รับข้อผิดพลาดเพิ่มเติม:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe กล่องเพิ่ม hashicorp/base
ไม่พบกล่อง 'hashicorp/base' หรือไม่สามารถเข้าถึงได้ในแค็ตตาล็อกระยะไกล หากนี่คือกล่องส่วนตัวใน Atlas ของ HashiCorp โปรดยืนยันว่าคุณเข้าสู่ระบบผ่าน `vagrant login` นอกจากนี้ โปรดตรวจสอบชื่ออีกครั้ง ที่ขยายตัว
URL และข้อความแสดงข้อผิดพลาดแสดงอยู่ด้านล่าง:

URL:["https://atlas.hashicorp.com/hashicorp/base"]
ข้อผิดพลาด:URL ที่ร้องขอส่งคืนข้อผิดพลาด:404 ไม่พบ

แต่คุณคาดหวังภาพฐาน มีการอ้างอิงทางออนไลน์มากมายถึงสาเหตุที่ทำให้เกิดปัญหานี้ และอ้างอิงถึงการประกาศเริ่มต้นในไฟล์คอนฟิกูเรชัน หากคุณเปลี่ยนเป็นรูปภาพที่มีอยู่และดาวน์โหลด คุณจะแก้ไขปัญหาได้ ใน Vagrantfile คุณจะต้องแก้ไขรายการเริ่มต้น แทนที่ฐานสตริงด้วยสิ่งที่คุณต้องการใช้เป็นรูปภาพเริ่มต้นเมื่อคุณเริ่ม Vagrant นี่อาจเป็น Ubuntu, Fedora, CoreOS หรืออะไรก็ได้

# ทุกสภาพแวดล้อมการพัฒนา Vagrant ต้องมีกล่อง คุณสามารถค้นหาช่องต่างๆ ได้ที่ https://atlas.hashicorp.com/search
config.vm.box ="ฐาน"

สำหรับแบบฝึกหัดของเรา และมีเหตุผลที่ดีในอนาคตสำหรับสิ่งนี้ เราจะทดสอบตัวเลือกอิมเมจ CoreOS (yungsang/coreos) ที่ค่อนข้างชัดเจนน้อยกว่า คว้าภาพ

ตรวจสอบว่ามีการเพิ่มลงในแคตตาล็อกแล้ว:

PS C:\HashiCorp\Vagrant\bin> รายการกล่อง .\vagrant.exe
อูบุนตู/trusty64 (กล่องเสมือน 20150506.0.0)
yungsang/coreos (virtualbox, 1.3.8)

จากนั้นเรียกใช้ Vagrant อีกครั้ง CoreOS จะเริ่มทำงาน รวมถึงการตั้งค่าผู้ใช้และเครือข่าย และรายละเอียดอื่นๆ อีกเล็กน้อย อีกสักครู่ระบบจะเริ่มทำงาน ตอนนี้คุณสามารถลองเชื่อมต่อกับโฮสต์โดยใช้ SSH โดยค่าเริ่มต้น แต่ละอินสแตนซ์ที่รันอยู่จะถูกกำหนดพอร์ตบนโลคอลโฮสต์ ในกรณีของเรา บริการ SSH สำหรับกล่องของเรากำลังทำงานบนพอร์ต 2222 บน 127.0.0.1 สิ่งนี้คล้ายกับที่เราเคยเห็นด้วย Docker อีกครั้ง แนวคิดการซื้อคืน เครือข่าย เหมือนกันมาก คำแนะนำมีเหตุผลที่ดีสำหรับเรื่องนี้

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ขึ้นไป
นำเครื่อง 'default' ขึ้นกับผู้ให้บริการ 'virtualbox' ...
==> ค่าเริ่มต้น:กำลังนำเข้ากล่องฐาน 'yungsang/coreos'...
==> ค่าเริ่มต้น:การจับคู่ที่อยู่ MAC สำหรับเครือข่าย NAT...
==> ค่าเริ่มต้น:ตรวจสอบว่ากล่อง 'yungsang/coreos' เป็นปัจจุบันหรือไม่...
==> ค่าเริ่มต้น:การตั้งชื่อ VM:bin_default_1431611566870_38538
==> ค่าเริ่มต้น:กำลังล้างอินเทอร์เฟซเครือข่ายที่ตั้งค่าไว้ก่อนหน้านี้...
==> ค่าเริ่มต้น:กำลังเตรียมอินเทอร์เฟซเครือข่ายตามการกำหนดค่า...
ค่าเริ่มต้น:อะแดปเตอร์ 1:nat
==> ค่าเริ่มต้น:กำลังส่งต่อพอร์ต...
ค่าเริ่มต้น:22 => 2222 (อะแดปเตอร์ 1)
==> ค่าเริ่มต้น:กำลังเรียกใช้การปรับแต่ง VM 'พรีบูต' ...
==> ค่าเริ่มต้น:กำลังบูท VM...
==> ค่าเริ่มต้น:รอให้เครื่องบูต นี้อาจใช้เวลาไม่กี่นาที...
ค่าเริ่มต้น:ที่อยู่ SSH:127.0.0.1:2222
ค่าเริ่มต้น:ชื่อผู้ใช้ SSH:แกน
ค่าเริ่มต้น:วิธีการรับรองความถูกต้อง SSH:รหัสส่วนตัว
ค่าเริ่มต้น:คำเตือน:หมดเวลาการเชื่อมต่อ กำลังลองใหม่...
==> ค่าเริ่มต้น:บูตเครื่องและพร้อม!

เชื่อมต่อกับเครื่องเสมือน

เครื่องเสมือนของเรากำลังทำงานอยู่ ยอดเยี่ยม. คุณสามารถตรวจสอบกับสถานะคนจรจัด:

คุณสามารถใช้คำสั่ง vagrant ssh หรือ vagrant rdp wrapper เพื่อเข้าสู่เครื่องเสมือนที่กำลังทำงานอยู่ มีวิธีอื่นๆ ขั้นสูงกว่านี้ในการทำเช่นนี้ แต่เราจะพูดถึงเรื่องนี้ในบทช่วยสอนติดตามผล ซึ่งเน้นไปที่ระบบเครือข่ายและคลัสเตอร์

สำหรับไคลเอนต์ Windows คุณสามารถใช้ RDP ได้ แต่วิธีนี้ใช้ไม่ได้ในกรณีของเรา เนื่องจาก RDP ไม่พร้อมใช้งานใน CoreOS ฉันไม่แน่ใจว่า VNC เป็นตัวเลือกหรือไม่ แต่นั่นเป็นสิ่งที่ฉันต้องทดสอบ ในทำนองเดียวกัน SSH ก่อให้เกิดปัญหา เนื่องจาก Windows ไม่ได้มาพร้อมกับเอเจนต์ SSH เริ่มต้น และหากคุณติดตั้ง PuTTY ไว้ ก็อาจไม่ได้อยู่ในเส้นทาง

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe rdp เริ่มต้น
==> ค่าเริ่มต้น:กำลังตรวจหาข้อมูล RDP...
ไม่สามารถระบุข้อมูลการเชื่อมต่อ RDP ของเครื่องนี้ได้
ตรวจพบ ซึ่งมักเกิดขึ้นเมื่อเราไม่พบ IP
หรือพอร์ตเชื่อมต่อสำหรับ RDP โปรดยืนยันว่าคุณกำลังส่งต่อ
พอร์ต RDP และเครื่องของคุณสามารถเข้าถึงได้

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ssh เริ่มต้น -- -A
ไม่พบไฟล์เรียกทำงาน `ssh` ในไดเร็กทอรีใดๆ ในตัวแปร %PATH% ติดตั้งไคลเอนต์ SSH หรือไม่ ลองติดตั้ง Cygwin, MinGW หรือ Git ซึ่งทั้งหมดนี้มีไคลเอนต์ SSH หรือใช้ไคลเอนต์ SSH ที่คุณชื่นชอบพร้อมข้อมูลการรับรองความถูกต้องต่อไปนี้:

โฮสต์:127.0.0.1
พอร์ต:2222
ชื่อผู้ใช้:แกน
รหัสส่วนตัว:C:/Users//.vagrant.d/insecure_private_key

จากนั้น คุณจะต้องแปลงคีย์ OpenSSH เป็นรูปแบบ PuTTY หรือที่คล้ายกัน หากคุณกำลังทำงานบน Windows อีกครั้ง ไม่ใช่สิ่งที่คนส่วนใหญ่จะเคยเจอในการผจญภัยของ Vagrant แต่การได้เห็นปัญหาที่คล้ายกันถูกจัดการในหลายๆ วิธีก็มีประโยชน์

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

อ่านเพิ่มเติม

หากคุณนึกถึงข้อความสักนิด:

ขอแนะนำ Vagrant บทความ Linux Journal

หลักสูตรความผิดพลาดกับคนพเนจร

สิ่งเชื่อมโยงเครือข่ายนักเทียบท่า

สรุป

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

แต่มันเป็นการหมุนที่น่าสนใจ และเรายังจะได้เห็นว่าเราจะพา Vagrant ไปสู่การเดินทางเสมือนจริงได้ไกลแค่ไหน อย่างน้อยที่สุด เราก็จัดการกับปัญหาการตั้งค่าโปรแกรมและการกำหนดค่าเริ่มต้น เราเรียนรู้วิธีดึงอิมเมจและเริ่มทำงาน ตรวจสอบเบื้องต้น และแก้ไขการเชื่อมต่อเครือข่าย มีประโยชน์ทีเดียว ในอนาคต แน่นอนว่ารวมถึงเฟรมเวิร์กปลั๊กอินที่สำคัญมาก ซึ่งขยายส่วนการเชื่อมต่อสำหรับ VMware, LXC, libvirt รวมถึงระบบเครือข่ายขั้นสูง การตั้งค่าคลัสเตอร์ และอื่นๆ คอยติดตามการปรับปรุง

ไชโย