คำถามที่ถูกต้องที่จะถามเมื่อตัดสินใจว่าจะใช้ Chef หรือ Puppet คืออะไร


16

ฉันกำลังจะเริ่มโครงการใหม่ซึ่งในบางส่วนจะต้องการการปรับใช้โหนดที่เหมือนกันจำนวนมากของคลาสที่แตกต่างกันประมาณสามคลาส:

  • โหนดข้อมูลซึ่งจะเรียกใช้อินสแตนซ์ที่ถูกทำลายของ MongoDB
  • แอ็พพลิเคชันโหนดซึ่งจะรันอินสแตนซ์ของแอปพลิเคชัน Ruby on Rails และแอปพลิเคชัน ASP.NET MVC รุ่นเก่า
  • กำลังประมวลผลโหนดซึ่งจะรันงานที่ร้องขอโดยโหนดแอปพลิเคชัน

โหนดทั้งหมดจะทำงานบนอินสแตนซ์ของ Ubuntu 10.04 แม้ว่าจะติดตั้งแพ็คเกจที่แตกต่างกัน

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

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

หากคุณเริ่มโครงการนี้วันนี้คำถามอะไรที่คุณถามตัวเองเพื่อตัดสินใจว่าคุณควรใช้ Chef หรือ Puppet สำหรับการจัดการการกำหนดค่า (หมายเหตุ: ฉันไม่ต้องการคำตอบสำหรับคำถาม "ฉันควรใช้เชฟหรือหุ่นเชิด")


อัพเดทในปี 2559: มีการโยกย้ายครั้งใหญ่จากเชฟและหุ่นเชิด พวกเขาไม่ได้รับคำแนะนำสำหรับโครงการใหม่ ตอนนี้การต่อสู้เป็นเกลือกับการรบ (ansible ง่ายต่อการติดตั้งและเริ่มต้น + ใช้งานได้กับ SSH เกลือจะง่ายขึ้นเมื่อโครงสร้างพื้นฐานมีขนาดใหญ่และซับซ้อน + เร็วขึ้น)
user5994461

คำตอบ:


12

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

คุณต้องการ DSL หรือไม่? - สูตรเชฟเขียนด้วยทับทิมหุ่นเชิดมี DSL ไม่ว่าจะเป็น DSL ดีหรือไม่ดีก็เป็นหนึ่งในความแตกต่างที่ใหญ่ที่สุดระหว่างพ่อครัวและหุ่นเชิด ลิงค์ที่คุณโพสต์ไปยังการเปรียบเทียบการให้คำปรึกษาของ bitfieldมีความคิดเห็นที่ดีเกี่ยวกับเรื่องนี้คุณควรอ่านถ้าคุณยังไม่ได้ ฉันยังพบว่าการโพสต์บล็อกนี้มีประโยชน์ตรวจสอบให้แน่ใจว่าคุณอ่านความคิดเห็นด้วย

คุณรู้จักทับทิมไหม - ถ้าคุณไม่รู้ทับทิมการเริ่มต้นกับพ่อครัวอาจจะยากขึ้นหรือต้องใช้เวลามากขึ้นในการเรียนรู้ภาษาใหม่ Puppet มีภาษาเป็นของตัวเองซึ่งง่ายต่อการเริ่มต้น เริ่มต้นด้วยหุ่นกระบอก 2.6 การแสดงสามารถเขียนเป็นทับทิมได้เช่นกัน

ที่ Open Source Bridge ในปี 2009 พวกเขามีคณะผู้แต่งและตัวแทนของเชฟหุ่นเชิด bcfg2, cfengine และ automateit ซึ่งคุณสามารถดูบน bliptvซึ่งมีการอภิปราย 1.75 ชั่วโมงเกี่ยวกับยูทิลิตี้การจัดการการตั้งค่า

Opscode / Chef พูดถึงความแตกต่างระหว่างมันกับหุ่นในคำถามที่พบบ่อยเช่นกัน

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


3
Chef มี DSL เช่นกันความแตกต่างคือเป็น Ruby DSL ภายในซึ่ง DSL ของ Puppet นั้นเป็นภายนอก Puppet ได้เพิ่ม DSL Ruby-pure เช่นกันเมื่อไม่นานมานี้ แต่ไม่ได้รับการสนับสนุนหรือแนะนำจากผู้ใช้หุ่นเชิดหรือ Puppet Labs
jtimberman

1
"คุณต้องการที่จะรู้ว่าทับทิม" เป็นคำถามหมายเลข 1 prolly ฉันยังคงหวังระบบที่ใช้ python :)
Sirex

บทความในบล็อกที่เชื่อมโยงนั้นเป็นตัวเริ่มที่มีประโยชน์มากสำหรับผู้ที่กำลังมองหาการเปรียบเทียบระหว่างเชฟและหุ่นกระบอก
Clinton

6

ให้ฉันบอกก่อน - ถ้าคุณไม่ได้ใช้ Puppet หรือ Chef; ไม่มีคำตอบที่ผิด จะดีกว่าที่คุณทำอยู่ตอนนี้

ในฐานะหัวหน้าทีมฉันเลือกหุ่นกระบอกให้กับทีมของฉัน ถ้าฉันเป็นทีมของตัวเองฉันจะเลือก Chef แทน นี่คือเหตุผล:

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

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

ทีมที่เต็มไปด้วยนักพัฒนาที่ทำกิจกรรมดูแลระบบมักจะชอบ Chef เนื่องจาก DSL ของ Puppet นั้นมีการประกาศการสั่งซื้อ (แม้ในแต่ละไฟล์) จะไม่สำคัญและทำให้หลายคนใช้ภาษาโปรแกรมทั่วไปมากกว่า

ฉันเคยได้ยินมาหลายครั้งแล้วว่าเชฟเป็นมิตรกับเมฆมากกว่า Puppet แต่ Puppet ได้ให้ความสำคัญกับผลิตภัณฑ์ Puppet Enterprise ในปีที่ผ่านมา ฉันไม่สามารถพูดจากประสบการณ์เกี่ยวกับความสามารถของคลาวด์ของผลิตภัณฑ์อย่างใดอย่างหนึ่ง

เนื่องจากคุณสมบัติที่กล่าวมาข้างต้นแบบแผน (และบ่อยครั้งที่ถูกต้อง) คือคุณจะพบว่า Puppet มีการแพร่หลายมากขึ้นในองค์กรบนเครื่องทางกายภาพโดยที่ Chef ควบคุมการเริ่มต้นในระบบคลาวด์ มีข้อยกเว้นแน่นอน แต่สิ่งที่ฉันได้เห็นกลับแน่นอนตายตัว

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


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

5

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

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

และอื่น ๆ แต่คุณสามารถตอบคำถามเหล่านี้ได้อย่างง่ายดายด้วยตัวเอง: ตั้งค่า! การเริ่มต้นใช้งานตัวอย่างเป็นเวลาสองสามชั่วโมงสำหรับแต่ละผลิตภัณฑ์และการพิจารณาว่าสิ่งใดก็ตามที่คุณใช้สิ่งนี้จะถูกนำมาใช้เป็นเวลานานเวลาจะคุ้มค่า ไม่เพียง แต่คุณจะรู้สึกได้ถึงวิธีที่พวกเขาจัดการกับสิ่งเฉพาะแพลตฟอร์ม (เช่น Debian และ apt, RPM และ yum) แต่มันจะช่วยให้คุณรู้สึกถึงแอปพลิเคชันได้อย่างแน่นอน

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

นั่นคือคำแนะนำของฉัน; Chef และ Puppet นั้นไม่ใช่เรื่องยากที่จะติดตั้งเซิร์ฟเวอร์เดียวและหนึ่งหรือสองไคลเอนต์และจะทำให้คุณได้รับประสบการณ์ทั้งสองอย่าง นอกจากนี้หากคุณเริ่มตั้งค่าและตระหนักถึงความเจ็บปวดขนาดใหญ่คุณจะมีความรู้อยู่แล้วก่อนที่จะตัดสินใจ


5

หากมีคนในโครงการของคุณที่มีประสบการณ์กับ Puppet อยู่แล้วฉันขอแนะนำให้คุณใช้ Puppet

เชฟและหุ่นกระบอกมีความคล้ายคลึงกันและโครงการทั้งสองมีคุณภาพสูงเท่ากัน หากคุณมีสิทธิ์เข้าถึงผู้ที่มีประสบการณ์หุ่นกระบอกอยู่แล้วเพียงใช้หุ่นเชิด


2

ข้างต้นเป็นแนวทางที่ดีแน่นอนฉันต้องการถามคำถามทั่วไปเหล่านี้ทุกครั้งที่ฉันกำลังพิจารณาการพึ่งพาบุคคลที่สามใหม่

  • โครงการมีอายุเท่าไหร่?
  • ชุมชนมีการใช้งานมากแค่ไหน (รายชื่อส่งเมลบั๊ก irc ฯลฯ )
  • เป็นเอกสารที่ดีที่มีให้กับการปฏิบัติมาตรฐานหรือไม่

สิ่งเหล่านี้เป็นเครื่องบ่งชี้ที่ดีของความสำเร็จโดยรวมของโครงการและสามารถทำนายอายุขัยได้บ้าง


อายุเป็นเรื่องง่ายหรือยากที่จะตัดสิน: เชฟเริ่มต้นโดย บริษัท ที่ใช้หุ่นเชิด แต่ไม่พอใจกับบางสิ่ง ไม่กี่ปีที่ผ่านมาใหม่ แต่อาจถูกมองว่าเป็นทางแยก
Freiheit

0

ลองหาคนที่เคยใช้ Chef หรือ Puppet มานานกว่าสองเดือนแล้วถามพวกเขาเกี่ยวกับประสบการณ์ของพวกเขา


0

สำหรับฉันมันเกี่ยวข้องอย่างใกล้ชิดกับประเพณีของชุมชนเฉพาะ พ่อครัวในอดีตใกล้ชิดกับพวก RubyOnRails มากขึ้น ความนิยมอย่างมากของเชฟในชุมชน ROR เนื่องจาก Engineyard สร้างโครงสร้างพื้นฐานของพวกเขาขึ้นบนสุดของ Chef

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