หุ่นทุกอย่างหรือเปล่า?


10

ข้อสังเกต: มีคำถามเชิงทฤษฎีมากมาย

เมื่อเร็ว ๆ นี้ฉันกำลังอ่านเกี่ยวกับ Puppet (และระบบที่คล้ายกัน) ซึ่งอย่างที่ฉันเชื่อว่าสามารถทำให้งานของฉันง่ายขึ้นมาก แต่ฉันพยายาม - และน่าเสียดายที่ไม่สามารถเข้าใจสิ่งที่ฉันสามารถ "หุ่นเชิด" ได้ ฉันสามารถจินตนาการ "คลาวด์" หรือ HA คลัสเตอร์ซึ่งเป็นค่าเดียวกันบนเซิร์ฟเวอร์มากขึ้น แต่เวิร์คสเตชั่นล่ะ? ฉันมีพีซีหนึ่งเครื่อง (centos ที่มี kvm), หนึ่ง notebook (fedora) และเซิร์ฟเวอร์ส่วนตัว, สามารถ (หรือควร) มันเป็นหุ่นเชิดหรือไม่? อะไรคือข้อดี (dis) หรือใน บริษัท ของเราเรามีเซิร์ฟเวอร์หลายร้อยแห่ง (ส่วนใหญ่เป็น Centos) แต่แต่ละเซิร์ฟเวอร์นั้นแตกต่างกันเล็กน้อย ไม่สามารถตัดสินใจได้ว่าจะดีกว่าถ้ามีการกำหนดค่าจำนวนมากในที่เดียว .. ข้อดี (Dis) ใช่ไหม ฉันจะมีความสุขสำหรับความคิดเห็นหรือลิงก์ของคุณกับหัวข้อนี้


ฉันจะแนะนำไม่พยายาม "Puppetize" ระบบ Windows ของคุณ โอ้และอ่านคำถามที่พบบ่อยของเราเกี่ยวกับคำถามประเภทใดที่คุณควรถามที่นี่
HopelessN00b

7
จำนวนของสิ่งที่คุณหุ่นและจำนวนของสิ่งที่หุ่นควรมีสัดส่วนโดยตรงกับจำนวนที่คุณสนใจเกี่ยวกับงานที่ทำสำหรับคุณ เริ่มต้นเล็ก ๆ เพียงแค่ตั้งค่า ntp หรือ rsyslog จากนั้นสร้างจากที่นั่นหากและตามที่คุณต้องการเมื่อคุณต้องการ
Sirex

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

1
การสนับสนุน Windows ได้รับการปรับปรุงอย่างมากใน Puppet รุ่นล่าสุด ฉันจัดการโหนด Windows นับร้อยด้วย Puppet Puppet บนโหนด POSIX นั้นตรงไปตรงมาและทรงพลังกว่ามาก แต่การใช้ Puppet อย่างน้อยบางอย่างใน Windows อาจมีประโยชน์อย่างไม่น่าเชื่อ
czervik

คำตอบ:


16

ระดับที่คุณสามารถนำไปใช้กับสภาพแวดล้อมทั้งหมดขึ้นอยู่กับตัวแปรหลายตัว:

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

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

Puppet นั้นยอดเยี่ยมเมื่อคุณจัดการฝูงบินของ VM ทั้งหมดทำสิ่งเดียวกัน ชนะโดยรวมและไม่ต้องพยายามมาก

ในอีกด้านหนึ่งของสเปกตรัมคุณมีสิ่งที่ฉันมีในงานล่าสุดของฉันซึ่งเป็นเซิร์ฟเวอร์ 200+ ที่ให้บริการ 130 บริการและมีเพียงกลุ่มเล็ก ๆ ที่ทำเช่นนั้นกับเครื่องมากกว่าหนึ่งเครื่อง มีบริษัท (และมหาวิทยาลัย) อย่างแน่นอนที่มีการเลียนแบบสิ่งนั้น แต่มันเป็นความพยายามอย่างมากและใช้เวลามากในการซื้อ มันต้องการให้ขั้นตอนแรกของกระบวนการปรับใช้เครื่องใหม่ของคุณไม่ใช่ "ติดตั้งระบบปฏิบัติการ" แต่ "สร้างรายชื่อ"

ในที่สุดมันเป็นความพยายามและปัญหาทางวัฒนธรรมที่มีประสิทธิภาพคุณจะต้องแก้ปัญหาในหมู่พนักงานไอทีของคุณทั้งหมด


13

หุ่นกระบอกทุกสิ่ง

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

สิ่งที่ไม่เหมือนใครจริง ๆ ที่คุณไม่ควรกังวลและควรให้บริการ configs จาก filebucket

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


6

ฉันคิดว่าคนอื่น ๆ อธิบายว่าทำไมฉันจะลองดูว่าจะทำยังไง ฉันคิดว่าด้วยความเข้าใจว่าบางคนอาจใช้หุ่นเชิดในการทำสิ่งที่คุณต้องการมันจะทำให้การตัดสินใจชัดเจนขึ้น

ทำกรณีพื้นฐานก่อน

โมดูลหุ่นกระบอกของคุณสำหรับ Apache ไม่ควรทำอะไรมากมายโดยค่าเริ่มต้น ติดตั้ง Apache กำหนดค่าให้เป็นมาตรฐานขั้นต่ำและเริ่มบริการ ใช้งานได้กับทุก distros ที่คุณต้องการสนับสนุน

เพิ่มความยืดหยุ่นที่สอง

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

ใช้คลาสบทบาทหรือกลุ่มโฮสต์เพื่อเชื่อมต่อแบบเอกสารสำเร็จรูปเข้าด้วยกัน

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

  1. ติดตั้ง Apache
  2. ตั้งค่าพื้นฐาน
  3. เพิ่ม vhosts ให้กับ apache
  4. กำหนดการตั้งค่าพิเศษใด ๆ
  5. เริ่ม Apache

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

class role::web_cust1 {
  include apache
  apache::vhost {'www.domain.com': }
  apache::vhost {'www.domain2.com': priority => '99', }
  include php
  include php-fpm
  include mysql
}

สารเติมแต่งอีกครั้ง

ใส่เคสพิเศษใน Hiera

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

กรณีการใช้งานของฉันคือพอร์ตฟัง เซิร์ฟเวอร์บางตัวมี Varnish หรือ haproxy ต่อหน้าพวกเขา โดยค่าเริ่มต้นโมดูลหุ่นกระบอกมี Apache ใช้พอร์ต 80 แต่ถ้า Hiera ค้นหาข้อมูลก็จะแทนที่ค่าเริ่มต้นนั้น


ฉันใช้ลำดับชั้นโมดูลบทบาทและทำงานได้ดี มันทำให้ง่ายต่อการสร้างสภาพแวดล้อมที่คุณอาจมีเซิร์ฟเวอร์จำนวนมากที่เล่นบทบาทมากมาย (เช่นบางบทบาท :: เว็บเซิร์ฟเวอร์อาจเป็น role :: storage ด้วย)
Andy Shinn

5

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

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

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

โมดูลหุ่นกระบอกของคุณจะดีขึ้นด้วย คุณมีโมดูล Nginx มากกว่าหนึ่งโมดูลหรือไม่ นั่นอาจหมายความว่าโมดูล Nginx ของคุณนั้นยอดเยี่ยมและคุณต้องทำให้มันยืดหยุ่นพอที่จะรองรับความต้องการพิเศษทั้งหมดของคุณ อย่างน้อยนามธรรมความคล้ายคลึงกันในโมดูล Nginx หลักที่คุณขยายสำหรับโมดูล "กำหนดเอง"

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

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

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