หุ่น - ภาพรวม
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 ไฟล์แบบคงที่ทั้งหมดจะอยู่ภายในไดเร็กทอรีไฟล์ของโมดูลใด ๆ การจัดการไฟล์ในรายการใด ๆ จะกระทำโดยใช้ทรัพยากรไฟล์