มีเหตุผลใดที่จะใช้ Puppet ควบคู่ไปกับ Docker?


16

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

ฉันออกมาพร้อม Docker ซึ่งยอดเยี่ยมและง่ายสุด ๆ สำหรับฉัน แต่เมื่อไม่นานมานี้ฉันลองใช้ Puppet แล้วคำถามก็มาถึงใจฉัน: "มีเหตุผลอะไรไหมที่จะใช้ Puppet กับ Docker?" นักเทียบท่าดูเหมือนจะทำทุกสิ่งที่หุ่นเชิดทำ แต่ในวิธีที่ง่ายกว่า

ปล. บางครั้งที่ผ่านมาในข่าวของแฮ็กเกอร์มีกงสุลซึ่งเป็นการกำหนดค่าที่ดีและการค้นหาบริการดังนั้นแม้แต่การกำหนดค่าสามารถแก้ไขได้

คำตอบ:


18

หุ่นเชิดและนักเทียบท่าสามารถทำสิ่งเดียวกันหลายอย่างอย่างไรก็ตามพวกเขาเข้าหาพวกเขาในวิธีที่แตกต่าง

Puppet จัดการไฟล์ + แพ็คเกจ + บริการ (เรียกว่า trifecta) นักเทียบท่าแค็ปซูลไบนารีและไฟล์การกำหนดค่าภายในของภาชนะ

ในช่วงเวลาของการเขียนนี้นักเทียบท่ายังไม่เสถียรและไม่ควรใช้ในการผลิต API จำนวนมากมีแนวโน้มที่จะเปลี่ยนแปลงจนกว่าจะมีการเปิดตัวเวอร์ชัน 1.0

แม้ว่านักเทียบท่าจะมีความเสถียร แต่ก็มีงานใหญ่สำหรับการแปลงทุกขั้นตอนและตั้งค่าไฟล์เป็นคอนเทนเนอร์นักเทียบท่า

ในทางกลับกันหุ่นเป็นผลิตภัณฑ์ที่มีเสถียรภาพและมาพร้อมกับระบบนิเวศทั้งหมดของเครื่องมือ (heira, mcollective, facter, razor) เครื่องมือเหล่านี้สามารถนำไปใช้งานได้อย่างรวดเร็วและไม่ต้องกังวลกับสิ่งต่าง ๆ

ฉันขอแนะนำแหล่งข้อมูลต่อไปนี้

วิดีโอเกี่ยวกับวิธีจัดการกองซ้อนแอปพลิเคชันด้วยหุ่นกระบอก
https://www.youtube.com/watch?v=KSo_mcJxFIA

พอดคาสต์เกี่ยวกับวิธีที่นักเทียบท่าและหุ่นกระบอกสามารถทำงานร่วมกันได้
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html

บทความบล็อกหุ่นกระบอกเกี่ยวกับวิธีรวมเข้ากับนักเทียบท่า
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker

บทความบล็อกอื่นเกี่ยวกับหุ่นเชิดและนักเทียบท่าอยู่ร่วมกัน
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist

โมดูลหุ่นสำหรับการโต้ตอบกับนักเทียบท่า
http://docs.docker.io/use/puppet/

การแก้ไขเล็กน้อยเกี่ยวกับคำศัพท์ของนักพัฒนา Devops เป็นวิธีการพัฒนาซอฟต์แวร์ที่นักพัฒนาและการดำเนินงานร่วมมือกันมากกว่าเครื่องมือเฉพาะ

ปรับปรุง

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

https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter

นอกจากนี้ยังมีวิดีโอสอนสั้น ๆ ที่ดีเกี่ยวกับนักเทียบท่าที่กำหนดโดย sysadmincasts.com

https://sysadmincasts.com/episodes/31-introduction-to-docker

ข้อดีนักเทียบท่า:

  • สามารถหมุนตัวอย่างได้เร็ว
  • เรียนรู้ง่ายกว่าหุ่นกระบอก
  • ง่ายต่อการหยุดทำงาน 0 ครั้ง

ข้อเสีย Docker:

  • ตู้คอนเทนเนอร์มีขีด จำกัด 10GB เมื่อใช้แบ็กเอนด์ devicemapper
  • การเปลี่ยนแปลงการกำหนดค่าขนาดเล็กใช้เวลานานในการสร้างคอนเทนเนอร์ใหม่
  • เงินค่าใช้จ่ายในการใช้รีจิสทรีนักเทียบท่าเช่น hub.docker.com, quay.io (รีจิสทรีของนักเทียบท่าที่โฮสต์ด้วยตนเองนั้นมีราคาแพงมากและไม่มีกุย)
  • ไม่มีระบบ init ที่เหมาะสม แอปพลิเคชั่นบางตัวเล่นได้ไม่ดี
  • ไม่มีการควบคุมผ่านเครือข่ายอย่างละเอียด
  • แอปพลิเคชั่นที่ต้องการ subshells (มองคุณ RVM + ruby) นั้นยุ่งยากมากในการทำงานอย่างถูกต้อง
  • ไม่สามารถจัดการโฮสต์ windows ได้ไม่มี SLES หรือระบบปฏิบัติการอื่นที่ได้รับความนิยมน้อย
  • นักเทียบท่าในปัจจุบันยังเด็กมาก
  • ขณะนี้ไม่สามารถตั้งค่า /etc/resolv.conf ของคุณในเวลาบิลด์อิน
  • ข้อบกพร่องต่าง ๆ ที่เราต้องเมาท์ / etc / localtime และ / dev / urandom เพื่อแมปไปยังโฮสต์ localtime และไดเรกทอรี urandom
  • ประสิทธิภาพไม่เร็วนัก (แม้จะมีการอ้างสิทธิ์ทั้งหมดที่นักเทียบท่าควรมีความเร็ว 99% ของโลหะเปลือย แต่บางครั้งก็ช้ากว่าเครื่องอื่น ๆ 30%)
  • ภาชนะบรรจุขนาดเล็กยังคงมีค่าใช้จ่ายหลายร้อยเมกะไบต์ ภาชนะของเรามีหลายกิกะไบต์

ข้อดีหุ่น:

  • ง่ายต่อการปรับขนาด
  • ทำงานร่วมกับเซิร์ฟเวอร์ที่มีอยู่ (windows, linux, sles)
  • รวดเร็วในการเปลี่ยนแปลงเล็กน้อย
  • ชุมชนที่เข้มแข็งของผู้ใช้และโมดูลหุ่นเชิดอื่น ๆ
  • API มาตรฐานสำหรับการติดตั้งแพ็คเกจบนแพลตฟอร์มทั้งหมด

ข้อเสียหุ่น:

  • โครงสร้างพื้นฐานขนาดใหญ่ซับซ้อนมาก
  • การพึ่งพาโมดูลเงื่อนไขสร้างรหัส spagetti
  • น้ำหนักมากขึ้น

ขณะนี้เราใช้หุ่นเชิดเพื่อจัดเตรียมคอนเทนเนอร์นักเทียบท่าของเรา คอนเทนเนอร์นักเทียบท่าใช้สำหรับงานสร้างเจนกินส์และถูกทำลายหลังจากงานสร้างแต่ละครั้ง มันทำงานได้ดีและทำให้เรามีสภาพแวดล้อมที่สอดคล้องกัน นั่นหมายความว่าเราต้องเขียนโค้ดเพียงครั้งเดียวจากนั้นสร้างทั้งเครื่องอูบุนตู sles และ centos ใหม่ การสร้างตู้คอนเทนเนอร์ใหม่ใช้เวลาประมาณ 15 ถึง 30 นาทีและยังคงเป็นกระบวนการที่ทำด้วยมือ นักเทียบท่านั้นยอดเยี่ยมสำหรับการหมุนทดสอบ vm อย่างรวดเร็ว

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


5
ฉันพบว่าคำตอบนี้เป็นแบบอัตนัยและเป็นการเก็งกำไร ฉันไม่เชื่อว่าจริง ๆ แล้วมันจะตอบว่าทำไมคนหนึ่งอาจใช้ Puppet ควบคู่ไปกับ / ร่วมกับ Docker เมื่อ Docker ปรากฏในระดับสูงเพื่อเป็นเครื่องมือที่ง่ายกว่าสำหรับจุดประสงค์เดียวกัน
8bitjunkie

1
@ 7SpecialGems อัปเดตด้วยข้อเท็จจริงเพิ่มเติม
spuder

1
มันจะเป็นการดีที่ได้เห็นการทบทวนคำตอบนี้ในโลกปี 2558 และสิ่งต่าง ๆ ได้เปลี่ยนไปอย่างไร
Oliver Bayes-Shelton

คำถาม / คำตอบนั้นยังคงสัมพันธ์กันในปี 2562 หรือไม่? สิ่งที่อาจมีการเปลี่ยนแปลง?
Md. Abu Taher

2

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

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

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

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

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

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