ความสัมพันธ์ระหว่าง Vagrant, Docker, Chef และ OpenStack (หรือผลิตภัณฑ์ที่คล้ายกัน)?


56

ฉันเป็นนักพัฒนาเว็บ แต่ฉันก็สนใจงานธุรการบางอย่าง ดังนั้นการย้ายใหม่จากการบริหารที่บริสุทธิ์ไปยัง dev-ops จึงเป็นประโยชน์สำหรับฉัน

อย่างไรก็ตามฉันมีปัญหาบางอย่างที่จะนำบางสิ่งมาสู่ความสัมพันธ์ อาจไม่มีเลยดังนั้นฉันต้องการขอความช่วยเหลือชี้แจง

โดยพื้นฐานแล้วสิ่งที่ฉันต้องการจะมีความสัมพันธ์คือซอฟต์แวร์สี่ประเภท (จากความเข้าใจของฉัน) ผลิตภัณฑ์ที่แน่นอนไม่สำคัญคุณสามารถวางซอฟต์แวร์ที่คล้ายกันเป็นทางเลือก:

  • คนจรจัด: จากความเข้าใจของฉันคือการสร้างและจัดการ VMs โดยอัตโนมัติ: การตั้งค่าเริ่มต้นและหยุดพวกเขา สิ่งนี้สามารถทำได้โดยใช้ VM ท้องถิ่นหรือระยะไกลเช่นบนแพลตฟอร์มคลาวด์
  • นักเทียบท่า: "VM น้ำหนักเบา" ซึ่งใช้แนวคิดเคอร์เนล Linux สองสามตัวซึ่งสามารถใช้เพื่อเรียกใช้กระบวนการแยกเช่นในสภาพแวดล้อมเว็บโฮสติ้งที่ใช้ร่วมกัน
  • Chef: เครื่องมือในการตั้งค่าและกำหนดค่าระบบปฏิบัติการเช่นภายใน VM
  • OpenStack: เครื่องมือที่ช่วยให้คุณสร้างคลาวด์ส่วนตัวของคุณเองดังนั้นจึงเปรียบได้กับบางสิ่งเช่น AWS

คำถาม # 1: คำอธิบายของฉันถูกหรือฉันผิดกับบางส่วน (หรือทั้งหมด) ของการบริโภคเหล่านี้?

คำถาม # 2: ฉันจะผสมเครื่องมือเหล่านั้นทั้งหมดได้อย่างไร มันจะสมเหตุสมผลไหม?

ในจินตนาการของฉันและจากจุดที่ฉันเข้าใจคุณสามารถไปและ

  • ใช้ OpenStack เพื่อสร้างคลาวด์ของคุณเอง
  • ใช้ Vagrant เพื่อจัดการ VMs ที่ทำงานอยู่ในคลาวด์
  • ใช้ Chef เพื่อตั้งค่า VM เหล่านี้
  • และในที่สุดก็ใช้ Docker เพื่อเรียกใช้กระบวนการภายใน VMs

ถูกต้องหรือไม่ และถ้าเป็นเช่นนั้นคุณสามารถให้คำแนะนำกับฉันเกี่ยวกับวิธีเริ่มต้นใช้สิ่งนี้ได้ไหม (มันค่อนข้างมากในเวลาเดียวกันและฉันยังไม่รู้ว่าจะเริ่มจากตรงไหน)?


1
มีทักษะไม่พอที่จะตอบคำถามนี้ได้อย่างสมบูรณ์ แต่การประเมินของ Vagrant และ Chef ของคุณนั้นถูกต้อง ในกล่องพัฒนาของฉันฉันหมุน VMs โดยใช้ Vagrant จากนั้นเตรียมให้กับ Chef และใช้งานได้ดีจริงๆ
GSP

คำตอบ:


54

ลองใช้เว็บเพจที่เกี่ยวข้องเพื่อค้นหาว่าโครงการเหล่านี้เกี่ยวข้องกับอะไรบ้าง ฉันจะเปลี่ยนลำดับที่คุณอยู่ในรายการ:

  • Chef : Chef เป็นแพลตฟอร์มอัตโนมัติที่แปลงโครงสร้างพื้นฐานเป็นรหัส

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

  • Vagrant : สร้างและกำหนดค่าสภาพแวดล้อมการพัฒนาที่มีน้ำหนักเบาทำซ้ำและพกพาได้

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

  • นักเทียบท่า : โครงการโอเพนซอร์ซที่จะแพ็คจัดส่งและเรียกใช้แอปพลิเคชันใด ๆ เป็นคอนเทนเนอร์น้ำหนักเบา

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

  • OpenStack : ซอฟต์แวร์โอเพ่นซอร์สสำหรับการสร้างระบบคลาวด์ส่วนตัวและสาธารณะ

    แม้ว่าจะเป็นความจริงที่ว่า OpenStack สามารถปรับใช้บนเครื่องเดียวแต่การปรับใช้ดังกล่าวเป็นเพียงการพิสูจน์แนวคิดซึ่งอาจไม่สามารถใช้งานได้จริงเนื่องจากข้อ จำกัด ของทรัพยากร

    เป้าหมายหลักสำหรับการติดตั้ง OpenStack คือสภาพแวดล้อมแบบหลายโหนดโลหะเปลือยซึ่งสามารถใช้ส่วนประกอบต่าง ๆในฮาร์ดแวร์เฉพาะเพื่อให้ได้ผลลัพธ์ที่ดีกว่า

    ฟังก์ชันการทำงานที่สำคัญของ OpenStack คือการสนับสนุนสำหรับเทคโนโลยีการทำงานแบบเสมือนจำนวนมากจากเสมือนจริงอย่างเต็มที่ (VirtualBox, VMWare) เพื่อ paravirtualized (KVM / Qemu) และภาชนะ (LXC) และแม้กระทั่งผู้ใช้โหมด Linux (UML)

ฉันพยายามนำเสนอผลิตภัณฑ์เหล่านี้เป็นส่วนประกอบของสถาปัตยกรรมเฉพาะ จากมุมมองของฉันมันทำให้รู้สึกถึงความสามารถในการกำหนดความต้องการของคุณเกี่ยวกับสภาพแวดล้อมที่คุณต้องการ (เชฟหุ่นเชิด Ansible ... ) จากนั้นสามารถปรับใช้ในแบบที่ควบคุมได้ (Vagrant, Docker , ... ) และในที่สุดก็ขยายเป็นขนาดทั่วโลกหากต้องการ

คุณต้องกำหนดฟังก์ชันการทำงานทั้งหมดนี้เท่าไหร่ในขอบเขตโครงการของคุณ

นอกจากนี้โปรดทราบว่าฉันได้ทำให้คำอธิบายทางเทคนิคส่วนใหญ่ง่ายเกินไป กรุณาใช้ลิงค์อ้างอิงสำหรับข้อมูลรายละเอียด


มีเชฟและหุ่นกระบอกเครื่องมือเดียวกันได้หรือไม่ ฉันหมายถึงพวกมันเท่ากันเหรอ? หากคุณต้องการเรียกใช้งานบนโฮสต์ Windows 10 คุณจะใช้เครื่องมือใด
ReynierPM

Puppet เป็นเครื่องมือที่คล้ายกับ Chef ไม่แน่ใจว่าจะดีกว่าบน Windows ..
Adeerlike

3

ฉันคิดว่ามาจากพื้นหลังนักพัฒนาจะทำให้กลายเป็น 'devops' จริง ๆ แล้วยุ่งยากคำถามของคุณเกือบ 3 ปีดังนั้นมันจะน่าสนใจที่จะได้ยินว่าคุณกำลังค้นหาการเดินทางฉันจะให้คำตอบจากมุมมองของ ผู้ดูแลระบบ sys เกี่ยวกับแอปพลิเคชั่นที่คุณกล่าวถึงข้างต้นและหวังว่ามันจะมีแสงน้อยหรือให้มุมมองด้านเทคนิคที่จะอธิบายว่าทำไมคน (admin หรือ dev) จะเริ่มพิจารณาสิ่งที่คุณถามเช่นจากผู้พัฒนา เปอร์สเปคทีฟความสัมพันธ์ระหว่าง x, y, z คืออะไรเครื่องมือเหล่านี้ยิ่งใหญ่กว่าที่ผลรวมของชิ้นส่วนของพวกเขา?

ฉันคิดว่าผู้ดูแลระบบของ sys มีอยู่ที่นี่ส่วนใหญ่ของแอปพลิเคชันที่คุณพูดถึงในคำถามของคุณแก้ปัญหา 'ผู้ดูแลระบบ' และในการทำเช่นนั้นให้สภาพแวดล้อมของศูนย์ข้อมูลที่เป็นนามธรรมมากขึ้น กลยุทธ์ของ devops (อ่านกลยุทธ์ / ทีม, devops ไม่ใช่บุคคล) ดังนั้นความสัมพันธ์กับแอพที่คุณพูดถึงคืออะไร? นี่เป็นวิธีการแบบองค์รวมในการให้บริการด้านไอทีอย่างไร?

OpenStack: เครื่องมือที่ช่วยให้คุณสร้างคลาวด์ส่วนตัวของคุณเองดังนั้นจึงเปรียบได้กับบางอย่างเช่น AWS

นั่นคือสิ่งที่มัน แต่มันทำอะไร? - ระบบปฏิบัติการที่มีชื่อที่เหมาะสมที่สุดคือ DOS - มันใช้งานดิสก์ของคุณโดยการทำให้ BIOS เป็นนามธรรม OpenStack จะดำเนินการศูนย์ข้อมูลของคุณและทำให้โครงสร้างพื้นฐานของคุณเป็นนามธรรม (IaaS - คือ Jargon สำหรับระบบปฏิบัติการศูนย์ข้อมูล) ตอนนี้ศูนย์ข้อมูลของคุณมี API, ไวยากรณ์คำสั่งและ GUI, OpenStack สามารถขับรถ hypervisors สวิตช์เราเตอร์ไฟร์วอลล์เครือข่ายพื้นที่จัดเก็บข้อมูล, โหลด balancers เจ้าภาพนักเทียบท่า ฯลฯ .. OpenStack ใช้ฮาร์ดแวร์ของคุณผลิต 'ปลั๊กอิน' หรือฟังก์ชั่นโดยเฉพาะอย่างยิ่ง สามารถอยู่ได้ แต่เพียงผู้เดียวในซอฟแวร์เป็นซอฟต์แวร์ที่กำหนดไว้บางสิ่งบางอย่างหรือฟังก์ชั่นเครือข่ายเสมือนจริง ที่ด้านบนของ OpenStack นี้และคลาวด์อื่น ๆ ทั้งหมดสามารถดัดแปลงโครงสร้างพื้นฐานของตัวเองได้โดยการอ่านสคริปต์ที่คุณโยนไปที่เอ็นจิน orchestration หรือถูกทริกเกอร์ตามกฎ (ขยายขนาดลดขนาด ฯลฯ ) ดังนั้น openstack จึงเป็นเลเยอร์ยักษ์ของสิ่งที่เป็นนามธรรม, เช่นฉันไม่สนใจว่าฉันมีสวิตช์, ให้เครือข่ายกับคำสั่งนี้ , หรือสร้างภาระที่ซับซ้อนให้ฉันสมดุล, HA, ที่เปิดเผยต่อสาธารณชน, ปรับขนาดอัตโนมัติ, จดทะเบียนโดเมน, จัดเก็บ แนบthingy - กับสคริปต์นี้ผมพบว่าบนอินเทอร์เน็ต

นักเทียบท่า: "VM น้ำหนักเบา" ซึ่งใช้แนวคิดเคอร์เนล Linux สองสามตัวซึ่งสามารถใช้เพื่อเรียกใช้กระบวนการแยกเช่นในสภาพแวดล้อมเว็บโฮสติ้งที่ใช้ร่วมกัน

นักเทียบท่าเป็นอีกชั้นหนึ่งของสิ่งที่เป็นนามธรรมและเช่นเดียวกับคลาวด์เป็นเทคโนโลยีที่ก่อกวนมันเปลี่ยนอุตสาหกรรมเพราะการแก้ปัญหา 'การดำเนินงาน' มากมายเช่นการพึ่งพาซอฟต์แวร์การอัพเกรดการแยกข้อมูลและการพกพาที่แท้จริง Java ได้รับความนิยมเนื่องจากความสะดวกในการพกพาซอร์สโค้ดที่นักพัฒนาไม่ต้องคิดมาก JVM ที่ใช้งานอยู่หมายความว่าโค้ดของพวกเขาควรทำงานบนเครื่องชงกาแฟตราบใดที่มันรองรับจาวา นักเทียบท่าแก้ปัญหาที่คล้ายกันเพื่อเรียกใช้แอพของฉันคุณต้องมีนักเทียบท่าโฮสต์ไม่ใช่คุณต้องการไพ ธ อนรุ่นนี้, เคอร์เนลนี้, ลินุกซ์ distro และอื่น ๆ , แอปยังคงมีการพึ่งพาเหล่านั้นแน่นอน, แต่โฮสต์ที่แฝงอยู่ไม่สนใจและผู้ดูแลระบบไม่สนใจสิ่งที่คุณทำในคอนเทนเนอร์แยก ( จุด) นักเทียบท่ากำลังเปลี่ยนแปลงทั้งกระบวนทัศน์การพัฒนาและการดำเนินงานการรักษาระบบปฏิบัติการทั้งหมดและบริการต่าง ๆ เป็นแบบไบนารี่ เราสามารถรับมันได้จากที่เก็บ , เวอร์ชั่นพวกมัน, ดัดแปลงมัน, รันมันด้วยพารามิเตอร์ ฯลฯ

Chef: เครื่องมือในการตั้งค่าและกำหนดค่าระบบปฏิบัติการเช่นภายใน VM

ใช่และไม่ก่อกวนเหมือนสองคนแรก Chef, puppet, ansible, salt, ผู้จัดการศูนย์ปฏิบัติการระบบและแอปพลิเคชั่นอื่น ๆ มากมายในพื้นที่นี้เป็นวิธีสำหรับนักพัฒนาและผู้ดูแลระบบในการปรับใช้โมเดลอัพเกรดและการดำเนินการอื่น ๆ การเปลี่ยนแปลง) มีไม่ดูเหมือนจะเป็นใด ๆ ของร่างกายมาตรฐานที่สามารถมองเห็นความพยายามเหล่านี้เหมือนมีเมฆ แต่เราไม่ได้จัดการกับสิ่งที่ชัดเจนเหมือนโครงสร้างพื้นฐานดังนั้นมันเจ็บปวดมากกว่าที่จะเรียนรู้สิ่งเหล่านี้และไม่สามารถถ่ายโอนจากที่หนึ่งไปยังอีกที่หนึ่งได้

คนจรจัด: จากความเข้าใจของฉันคือการสร้างและจัดการ VMs โดยอัตโนมัติ: การตั้งค่าเริ่มต้นและหยุดพวกเขา สิ่งนี้สามารถทำได้โดยใช้ VM ท้องถิ่นหรือระยะไกลเช่นบนแพลตฟอร์มคลาวด์

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

คุณสามารถให้คำแนะนำกับฉันเกี่ยวกับวิธีเริ่มใช้ทั้งหมดนี้ได้ไหม (มันค่อนข้างมากในเวลาเดียวกันและฉันยังไม่รู้ว่าจะเริ่มจากตรงไหน)

นี่คือเหตุผลที่ฉันคิดว่าผู้ดูแลระบบมีความได้เปรียบเราต้องทำสิ่งนี้ด้วยตนเองและรู้ว่าสิ่งที่ผิดพลาดหุ่นหุ่นคอมพิวเตอร์คลาวด์คอมพิวติ้งและนักเทียบท่าจะมาง่ายกว่าสำหรับเรานักพัฒนาจะพบว่าตัวเองแทนเจนต์มากมาย คำแนะนำสำหรับผู้ที่อาจเป็น devops คือต้องเป็นผู้ดูแลระบบก่อน


0

ฉันเพิ่งเสร็จสิ้นโครงการปรับใช้ OpenStack ซึ่งใช้เซิร์ฟเวอร์ Chef ภายในอินสแตนซ์ Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

ปัญหาหลักของการทำเช่นนี้คือการรับอินสแตนซ์ Vagrant เป็น IP เดียวกันทุกครั้งที่คุณต้องการจัดการโหนด หากคุณคงที่อยู่มันทำงานได้ดี การทำผ่าน VPN นั้นน้อยกว่าอุดมคติ


0

ในตอนท้ายของฉันฉันใช้ชุด Vagrant และ Docker เท่านั้น

ฉันใช้คนเร่ร่อนในการจัดเตรียมเครื่อง (มีผู้ให้บริการคลาวด์เพิ่มเติมแต่ฉันใช้ VirtualBox ในตัวเพราะฉันใช้วิธีการนี้เครือข่ายภายนอกและพื้นที่เก็บข้อมูลเป็นคู่มือค่อนข้างมาก แต่ถ้าคุณใช้บางอย่างเช่นปลั๊กอินคนจรจัดแจ้ง AWS เพื่อจัดเตรียมชิ้นส่วนที่จำเป็นสำหรับคุณ

สคริปต์การจัดสรรที่ฉันใช้ชี้ไปยังตำแหน่งที่ปลอดภัยซึ่งมีใบรับรอง CA และกุญแจที่ใช้สำหรับการลงชื่อ CSRs พร้อมกับdocker swarm joinโทเค็น นอกจากนี้ฉันติดตั้งนักเทียบท่าเครื่องยนต์และกำหนดค่าให้เข้าร่วมฝูง (เริ่มต้นถ้าไม่มี)

หลังจากที่ตัดสินเสร็จแล้วฉันก็เพียงทำdocker stack deployจากเครื่องจักรในพื้นที่หรือสร้างกล่องเพื่อปรับใช้สแต็คกับทุกสิ่งที่ฉันต้องการ

ในกรณีของฉันฉันเพิ่งเลิกพ่อครัวไปเพียงแค่ใช้สคริปต์การติดตั้งโพสต์อย่างง่าย ๆ ที่ทำyumหรือapt-getเป็นสคริปต์การจัดสรรของฉัน

ฉันยังใช้ปลั๊กอินคนจรจัดทริกเกอร์เพื่อเพิ่มสคริปต์เพิ่มเติมก่อนที่จะทำลาย (ในกรณีของฉันที่จะออกจากฝูง)

ส่วนที่ดีของการรวมศูนย์ด้วย Vagrant คือคุณสามารถทำซ้ำสภาพแวดล้อมบนระบบอื่นหรือคอมพิวเตอร์เครื่องเดียวสำหรับการพัฒนาเพียงแค่ต้องเพิ่มหรือเปลี่ยนproviderส่วน ใจคุณฉันไม่ได้ผ่านการตั้งค่า OpenStack บนคอมพิวเตอร์เครื่องเดียวเพื่อจัดการ VirtualBox

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.