Juju "อยู่ร่วมกัน" กับ Chef ได้อย่างไรโดยใช้กระบวนการอัตโนมัติ "อีกขั้นหนึ่ง"


15

เป็นที่ชัดเจนจากโพสต์นี้ที่ Juju ตั้งอยู่ในชั้นที่แตกต่างจาก Chef Server Juju นั่งที่ orchestration หรือเลเยอร์บริการในขณะที่ Chef นั่งอยู่ที่เซิร์ฟเวอร์หรือเลเยอร์การกำหนดค่าเพิ่มเติม

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

ดังนั้นหากต้องการแยกคำถามที่ครอบคลุมในหัวข้อ: (สนใจเป็นพิเศษใน Juju ทำงานร่วมกับ Chef Server)

  • ตัวอย่างของมนต์เสน่ห์ "ที่เขียนในเชฟ" คืออะไร? มันเป็นเพียงเสน่ห์ที่เขียนด้วยการทุบตีที่เรียกchef-soloคำสั่งแล้วหรือไม่? ถ้าเป็นเช่นนั้นมนต์เสน่ห์สามารถเรียกใช้chef-clientคำสั่งเพื่อทำงานร่วมกับ Chef Server ได้หรือไม่?
  • ทับซ้อนระหว่าง Juju และพ่อครัวอยู่ที่ไหน ตัวอย่างเช่นเสน่ห์ apache2 มีconfig-changedตะขอของมันที่ทำให้การเปลี่ยนแปลงการกำหนดค่าที่ในโลกเชฟจะเกิดขึ้นในสูตรโดยใช้ไฟล์แม่แบบ หากเสน่ห์ของ Juju ทำงานควบคู่ไปกับตำราพ่อครัวในการปรับใช้บริการ apache2 (คลัสเตอร์) มันเกือบจะดูเหมือนว่าเสน่ห์ "apache2-chef" จะต้องถูกเขียนขึ้นเพื่อให้คุณสามารถแยกงานออกได้ ในกรณีนี้เครื่องราง apache2 ใน Charm Store จะมีประโยชน์น้อยกว่า
  • หากคุณมีบทบาท Chef ที่ใช้กับโหนด (หน่วยบริการ) ที่จัดวาง / จัดการโดย Juju และดูแลระบบของคุณตัดสินใจเปลี่ยนกฎไฟร์วอลล์สำหรับบทบาทเซิร์ฟเวอร์เฉพาะและทำสิ่งนี้ในบทบาท Chef Juju จะเขียนทับการเปลี่ยนแปลงเหล่านั้นหรือไม่
  • ยิ่งไปกว่านั้น Juju สามารถเป็น wrapper ของ Chef Server ได้หรือไม่เช่นIronfan

ฉันมองว่า Chef Server เป็นวิธีที่ Juju สามารถทำตามวิธีได้ แต่นำสิ่งที่ได้มาไว้ในตาราง หมายความว่าสถานะปัจจุบันของบริการและเครื่องจักรที่แท้จริงสามารถสอบถามและดำเนินการได้ คุณไม่สามารถทำได้ใน Chef Server เป้าหมายของฉันคือการนำความสามารถในการรับรู้และการบริการของ Juju มาสู่โครงสร้างพื้นฐานที่บริหารจัดการโดย Chef Server

เกือบจะดูเหมือนว่าชุดทั้งชุดจะต้องถูกเขียนโดยที่ข้อมูลการจัดการ / การกำหนดค่าทั้งหมดถูกจัดการโดยเชฟ

ฉันชอบที่จะได้ยินน้ำหนักจากใครบางคนที่ Canonical (เช่น Jorge Castro) และจาก Opscode (เช่น A. Jacob หรือ J. Timberman)

คำตอบ:


13

คำถามที่น่ากลัว!

the tl; dr

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

  • Charms hooks สามารถใช้สูตรเชฟที่มีอยู่แล้วที่เรียกใช้สไตล์เดี่ยวในหน่วยบริการ (แนะนำ)

  • หน่วยบริการ juju ลงทะเบียนกับ chef-server ที่มีอยู่แล้วโดยใช้บริการย่อยของ Chef-node

แนวคิดเหล่านี้ยังไม่ได้นำไปใช้ / ทดสอบสำหรับพ่อครัว แต่มีหุ่นที่เทียบเท่ากันอยู่

... เอ่อ .. คำตอบที่ไม่สั้น

ต่อไปนี้เป็นรายละเอียดเล็ก ๆ น้อย ๆ ของสองวิธีในการรวมเชฟและ juju:

Juju เป็นสุดยอดสุนัข

ที่นี่จูจูแสดงรายการ คุณค่าที่ยิ่งใหญ่ที่สุดของ juju คือการประสานงานเหตุการณ์ในระหว่างการจัดการการกำหนดค่าแบบกระจาย ... ดังนั้นชื่อเล่น "service orchestration" Juju Charms ประกอบด้วย hooks ซึ่งเรียกโดย juju ใน "เวลาที่เหมาะสม" เมื่อประสานงานการจัดการบริการ การใช้ตะขอเหล่านี้เปิดค่อนข้างมาก พวกมันคือเชลล์สคริป, ซอร์สโค้ด, หุ่นกระบอกหรือ ... สูตรเชฟ

Juju แบ่งบิตของการกำหนดค่าบริการใด ๆ เป็น:

  • "การติดตั้ง" .. บิตที่เฉพาะเจาะจงสำหรับการติดตั้งบริการเฉพาะบนโหนด

  • "ความสัมพันธ์" .. บิตของการกำหนดค่าที่จำเป็นในการเชื่อมโยงบริการนั้นกับบริการอื่น ๆ

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

เราต้องการตัวอย่างบางส่วน แต่ฉันคิดว่ามันจะเป็นที่นิยม b / c chef มี dsl ที่ยอดเยี่ยมเครื่องมือ templating ที่ยอดเยี่ยมและใช้งานได้ดีกว่าทุบตีเมื่อเขียน config ที่ซับซ้อน สำหรับการกำหนดค่าอย่างง่ายสูตรพ่อครัวนั้นค่อนข้างโอเคมากเกินไปดังนั้นวิธีการรวมนี้จึงเป็นวิธีที่ดีที่สุดของทั้งสองโลก ... และมีขาที่จริงจังต่อไป

พ่อครัวเป็นสุนัขที่ดีที่สุด

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

ฉันคิดว่าสิ่งนี้จะคล้ายกับหุ่นเชิดย่อย คีย์ที่จำเป็น, บทบาท, ฯลฯ ทั้งหมดจะถูกระบุผ่านการตั้งค่าไปยัง charm-node ฉันจะเริ่มต้นที่นั่น วิธีการที่ซับซ้อนกว่านี้คือสำหรับ Chef-node sub ที่จะซักถามทั้งบริการหลักที่แนบมาและ Chef-Server เพื่อกำหนดบทบาทแบบไดนามิก แต่นั่นจะค่อนข้างยากกว่าการระบุไว้ใน config สำหรับ sub

ความเห็น

ฉันขอแนะนำวิธีที่ 1 ข้างต้นหากเป็นไปได้ การมีเลเยอร์การประสานงานด้านบนของเครื่องมือกำหนดค่าอาจทำงานได้ดีในระยะยาว โครงสร้างพื้นฐานในโลกแห่งความเป็นจริงอาจเป็นทั้งคอมโบหรือความผันแปรของทั้งสองแนวทางเป็นระยะเวลาหนึ่ง ... โดยเฉพาะอย่างยิ่งระหว่างการย้ายถิ่นฐาน การอยู่ร่วมกันตามแผนโดยใช้วิธีที่ 2 อาจจะใช้ได้ก็ต่อเมื่อส่วนประกอบที่จัดการโดยเครื่องมือทั้งสองนั้นค่อนข้างมีมุมฉากซึ่งกันและกัน ไม่แน่ใจว่าจะเป็นอย่างไร บางทีจูจูและพ่อครัวจัดการแยกบริการที่ค่อนข้างแยกกันอยู่บ้าง ฉันคิดว่ามันอาจทำงานได้ดีเพื่อให้ juju จัดการบริการหลักและให้พ่อครัวจัดการด้านโครงสร้างพื้นฐานเพิ่มเติม dunno นั่นเป็นการสนทนาที่ยาวกว่า :)

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

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

ตกลงนั่นคือการท่องเที่ยวที่เหมาะสม:) ... เริ่มกันเลยจากนั้นเราสามารถเข้าไปดูรายละเอียดเพิ่มเติมในบล็อกแสดงความคิดเห็นที่ตามมา


สิ่งที่ดีที่นี่ "ฉันสงสัยว่ามันอาจจะทำงานได้ดีเพื่อให้ juju จัดการบริการหลักและให้พ่อครัวจัดการด้านโครงสร้างพื้นฐานเพิ่มเติม" นี่คือสิ่งที่ฉันสนใจจริง ๆ ขณะที่เราแบ่งปันความสงสัยนี้ อย่างที่คุณพูดไว้ DSL ของเชฟและการสร้างเทมเพลตนั้นยอดเยี่ยมสำหรับการตั้งค่า อย่างไรก็ตามมีแง่มุมอื่น ๆ ของ Chef Server (ถุงข้อมูล) ที่ยากสำหรับวิธีการแรกของคุณ Juju อยู่ในระดับบริการควรเป็นสุนัขอันดับต้น ๆ แต่ฉันรู้สึกว่าควรอนุญาตให้ Chef ทำสิ่งที่ดีที่สุดในรูปแบบ Chef Server จะต้องทำงานได้ทั้งผู้พัฒนาและผู้ดูแลระบบ แต่อาจไม่จำเป็นต้องใช้ Chef Server
Ian D. Rossi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.