หุ่น - ภาพรวม

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

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

คุณสมบัติของระบบหุ่นกระบอก

ต่อไปนี้เป็นคุณสมบัติที่สำคัญที่สุดของ Puppet

Idempotency

Puppet รองรับ Idempotency ซึ่งทำให้ไม่เหมือนใคร เช่นเดียวกับ Chef ใน Puppet เราสามารถเรียกใช้การกำหนดค่าชุดเดียวกันหลาย ๆ ครั้งบนเครื่องเดียวกันได้อย่างปลอดภัย ในขั้นตอนนี้ Puppet จะตรวจสอบสถานะปัจจุบันของเครื่องเป้าหมายและจะทำการเปลี่ยนแปลงก็ต่อเมื่อมีการเปลี่ยนแปลงเฉพาะในการกำหนดค่า

Idempotency ช่วยในการจัดการเครื่องใด ๆ ตลอดอายุการใช้งานเริ่มตั้งแต่การสร้างเครื่องจักรการเปลี่ยนแปลงการกำหนดค่าในเครื่องจนถึงวันสิ้นอายุการใช้งาน ฟีเจอร์ Puppet Idempotency มีประโยชน์มากในการปรับปรุงเครื่องเป็นเวลาหลายปีแทนที่จะสร้างเครื่องเดิมซ้ำหลาย ๆ ครั้งเมื่อมีการเปลี่ยนแปลงการกำหนดค่า

ข้ามแพลตฟอร์ม

ใน Puppet ด้วยความช่วยเหลือของ Resource Abstraction Layer (RAL) ซึ่งใช้ทรัพยากร Puppet เราสามารถกำหนดเป้าหมายการกำหนดค่าระบบที่ระบุโดยไม่ต้องกังวลเกี่ยวกับรายละเอียดการใช้งานและวิธีการที่คำสั่งกำหนดค่าจะทำงานภายในระบบซึ่งกำหนดไว้ในการกำหนดค่าพื้นฐาน ไฟล์.

หุ่น - เวิร์กโฟลว์

Puppet ใช้เวิร์กโฟลว์ต่อไปนี้เพื่อใช้การกำหนดค่าบนระบบ

  • ใน Puppet สิ่งแรกที่ Puppet master ทำคือรวบรวมรายละเอียดของเครื่องเป้าหมาย การใช้ปัจจัยที่มีอยู่ในโหนดหุ่นทั้งหมด (คล้ายกับ Ohai ใน Chef) จะได้รับรายละเอียดการกำหนดค่าระดับเครื่องทั้งหมด รายละเอียดเหล่านี้จะถูกรวบรวมและส่งกลับไปยังผู้ควบคุมหุ่น

  • จากนั้นหุ่นต้นแบบจะเปรียบเทียบการกำหนดค่าที่ดึงมากับรายละเอียดการกำหนดค่าที่กำหนดไว้และด้วยการกำหนดค่าที่กำหนดไว้จะสร้างแค็ตตาล็อกและส่งไปยังตัวแทนของ Puppet เป้าหมาย

  • จากนั้นตัวแทน Puppet จะใช้การกำหนดค่าเหล่านั้นเพื่อให้ระบบเข้าสู่สถานะที่ต้องการ

  • ในที่สุดเมื่อมีโหนดเป้าหมายอยู่ในสถานะที่ต้องการแล้วระบบจะส่งรายงานกลับไปยัง Puppet master ซึ่งจะช่วยให้ Puppet master เข้าใจว่าสถานะปัจจุบันของระบบอยู่ที่ใดตามที่กำหนดไว้ในแค็ตตาล็อก

หุ่น - ส่วนประกอบสำคัญ

ต่อไปนี้เป็นส่วนประกอบสำคัญของ Puppet

ทรัพยากรหุ่น

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

ผู้ให้บริการ

โดยพื้นฐานแล้วผู้ให้บริการเป็นผู้เติมเต็มทรัพยากรใด ๆ ที่ใช้ใน Puppet ตัวอย่างเช่นแพ็กเกจประเภท 'apt-get' และ 'yum' ทั้งสองแบบใช้ได้กับการจัดการแพ็คเกจ บางครั้งอาจมีผู้ให้บริการมากกว่าหนึ่งรายบนแพลตฟอร์มใดแพลตฟอร์มหนึ่ง แม้ว่าแต่ละแพลตฟอร์มจะมีผู้ให้บริการเริ่มต้นเสมอ

ประจักษ์

Manifest คือชุดของทรัพยากรที่อยู่คู่กันภายในฟังก์ชันหรือคลาสเพื่อกำหนดค่าระบบเป้าหมายใด ๆ พวกเขามีชุดรหัส Ruby เพื่อกำหนดค่าระบบ

โมดูล

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

เทมเพลต

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

Listen <% = @httpd_port %>

ตัวแปร httpd_port ในกรณีนี้ถูกกำหนดไว้ในรายการที่อ้างอิงเทมเพลตนี้

ไฟล์คงที่

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