สิ่งที่ไม่ควรจัดการโดยหุ่นเชิด


67

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

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

ดังนั้นฉันควรออกจากการกำหนดค่า IP จากหุ่นเชิดหรือไม่ หรือฉันควรตั้งค่าก่อนเริ่มต้นหุ่นเชิดเป็นครั้งแรก แต่จัดการที่อยู่ IP ด้วยหุ่นเชิด? ระบบที่มี IP หลายตัว (เช่นสำหรับ WAN, LAN และ SAN)

แล้วIPMIล่ะ คุณสามารถกำหนดค่าส่วนใหญ่หากไม่ได้ทั้งหมดของมันด้วยipmitoolช่วยให้คุณประหยัดจากการเข้าถึงคอนโซล (ทางกายภาพ, พอร์ตอนุกรมแบบ over-lan, รีโมต KVM ระยะไกล, อะไรก็ตาม) ดังนั้นมันจึงสามารถทำงานอัตโนมัติด้วยหุ่นเชิด แต่การตรวจสอบสถานะของมันอีกครั้งในการทำงานของตัวแทนหุ่นกระบอกนั้นไม่ได้ดูดีสำหรับฉันเลยและไฟขั้นพื้นฐานในการเข้าถึงระบบก็เป็นสิ่งที่ฉันต้องการก่อนที่จะทำสิ่งอื่น

เรื่องราวทั้งหมดเกี่ยวกับการติดตั้งการอัปเดต ฉันไม่ได้ไปในจุดเฉพาะนี้มีคำถามมากมายเกี่ยวกับ SF และปรัชญาที่แตกต่างกันมากมายระหว่าง sysadmins ที่แตกต่างกัน ตัวเองผมจึงตัดสินใจที่จะไม่ปล่อยให้ปรับปรุงหุ่นสิ่ง (เช่น. เท่านั้นensure => installed) และจะปรับปรุงด้วยตนเองขณะที่เรากำลังใช้อยู่แล้วที่จะออกจากระบบอัตโนมัติของงานนี้เพื่อวันต่อมาเมื่อเรามีความมั่นใจมากขึ้นด้วยหุ่นเชิด (เช่น. โดยการเพิ่มMCollectiveไป ส่วนผสม)

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


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

6
<vague> คุณไม่ควรจัดการสิ่งต่าง ๆ ในหุ่นกระบอกเมื่อจัดการได้ดีกว่า / ง่ายกว่า </vague>: p
Zoredache

1
ด้วยความชุกของ บริษัท ที่ใช้หุ่นกระบอกในวันนี้ฉันสามารถเห็นคำถามนี้ดึงดูดความสนใจอย่างมากในอีกไม่กี่ปีข้างหน้า
Daniel Li

คำตอบ:


24

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

ตัวอย่างที่เฉพาะเจาะจง (เขียนจากคำถามทั้งหมด "นี่คือเหตุผลที่คุณต้องการจัดการกับ" คำบรรยาย):


การกำหนดค่าเครือข่าย IP

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

แต่บอกว่าตอนนี้คุณเพิ่มเนมเซิร์ฟเวอร์อื่นให้กับสภาพแวดล้อมของคุณและคุณต้องอัปเดตเครื่องทั้งหมดของคุณ - คุณไม่ต้องการให้ระบบการจัดการการกำหนดค่าของคุณทำเพื่อคุณหรือไม่?

หรือพูดว่า บริษัท ของคุณได้มาและ บริษัท แม่ใหม่ของคุณต้องการให้คุณเปลี่ยนจาก 192.168.0.0/24 ที่อยู่เป็น 10.11.12.0/24 เพื่อให้พอดีกับระบบการนับของพวกเขา

หรือคุณได้รับสัญญาของรัฐบาลที่ยิ่งใหญ่ทันใด - เพียงแค่จับต้องเปิด IPv6 RIGHT FREAKIN 'ทันทีหรือจัดการดีล ....

ดูเหมือนว่าการกำหนดค่าเครือข่ายเป็นสิ่งที่เราต้องการจัดการ ...


การกำหนดค่า IPMI

เช่นเดียวกับที่อยู่ IP ฉันแน่ใจว่าคุณตั้งค่านี้ก่อนที่คุณจะวางเครื่องในชั้นวาง - มันเป็นแค่สามัญสำนึกที่ดีในการเปิดใช้งาน IPMI, รีโมทคอนโซล ฯลฯ บนเครื่องใด ๆ ที่มีความสามารถและการกำหนดค่าเหล่านั้นไม่ ไม่ต้องเปลี่ยนอะไรมากมาย ...

... จนกว่าฉันจะได้มาซึ่งสมมติฐานที่กล่าวถึงในการกำหนดค่า IP ข้างต้น - เหตุผลที่คุณถูกบังคับให้ออกจากที่อยู่ 192.168-net นั้นเป็นเพราะนั่นคือ IPMI- ที่ดินตามการทับซ้อนขององค์กรใหม่ของคุณและคุณต้องอัปเดตการ์ด IPMI ทั้งหมดของคุณ ตอนนี้เพราะพวกเขากำลังเหยียบย่ำพื้นที่ IP ที่จองไว้ของใครบางคน

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


อัพเดท

การอัปเดตซอฟต์แวร์เป็นพื้นที่สีเทามากกว่า - ในองค์กรของฉันเราประเมินหุ่นกระบอกนี้และพบว่า "ขาดอย่างมาก" ดังนั้นเราจึงใช้radmindเพื่อจุดประสงค์นี้ ไม่มีเหตุผลที่ Puppet ไม่สามารถโทรหา radmind ได้ - อันที่จริงแล้วถ้า / เมื่อเราย้ายไปยัง Puppet เพื่อจัดการการตั้งค่านั่นเป็นสิ่งที่จะเกิดขึ้นอย่างแน่นอน!

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


เรื่องการอัพเดท สิ่งหนึ่งที่จะทำให้คุณมีปัญหากับหุ่นที่รันการอัปเดตของคุณคือเมื่อมีการติดตั้งบริการที่สำคัญเช่น: mysql, apache - คุณไม่ต้องการให้ผู้ที่เริ่มต้นใหม่ด้วยความตั้งใจ Puppet ให้วิธีในการล็อคในแพ็คเกจเหล่านั้นนั่นเป็นวิธีที่ฉันหลีกเลี่ยงได้ในขณะที่เพลิดเพลินกับการอัพเดททั่วไปสำหรับถั่วและสลักเกลียวอื่น ๆ
thinice

@thinice นั่นเป็นจุดที่ดี แต่ความแตกต่างตามปกติของฉันคือการตบคนที่อยู่ด้านหลังศีรษะและตะโกนคำว่า REDUNDANCY ดังมากจริง ๆ :-) (มันเป็นสถานการณ์ที่เลวร้ายยิ่งกว่าด้วยความวุ่นวายเพราะมันแค่ทำลายระบบไฟล์นโยบายของเราคือ ให้โหลดบาลานเซอร์โหลดครึ่งเซิร์ฟเวอร์เพื่อให้เราสามารถแก้ไข / ทดสอบเซิร์ฟเวอร์เหล่านั้นจากนั้นเราย้ายทุกคนไปยังเครื่องที่ได้รับการติดตั้งเพื่อให้เราสามารถทำงานได้อีกครึ่งหนึ่งทำงานได้ดี แต่คุณต้องการความซ้ำซ้อนในสภาพแวดล้อมของคุณ)
voretaq7

10

อย่าประดิษฐ์ล้อใหม่

ใช่คุณสามารถมีทรัพยากรผู้ใช้เสมือน 50 หุ่นกระบอกและรับรู้ได้ตามต้องการในโมดูลของคุณ ... แต่ถ้าทำได้ให้ใช้ LDAP

ฉันพูดจากประสบการณ์ที่ขมขื่น แม้ว่า ldap ยังไม่ได้เป็นตัวเลือกที่นี่

ตัวอย่างเพิ่มเติมกำลังส่งไฟล์โฮสต์ออกไปแทนที่จะใช้ DNS


3
ฉันจำคำเหล่านั้นทั้งหมด แต่ฉันก็ยังไม่แน่ใจว่าคุณกำลังพยายามพูดอะไร
คริส S

2
ฉันพยายามจะพูด หุ่นกระบอกเป็นสถานที่สำคัญสำหรับ "ข้อมูล" DNS และ LDAP ก็เช่นกัน อย่าพยายามทำงานของพวกเขาด้วยหุ่นมันขยะที่มัน .... ฉันพูดแบบนี้เมื่อเห็นไฟล์ยักษ์ / etc / โฮสต์ถูกผลักออกมาพร้อมกับหุ่นทุกครั้งที่มีโฮสต์ใหม่เข้าร่วมเครือข่าย
Sirex

3
คนใช้ Puppet แทน LDAP เพื่อจัดการบัญชีผู้ใช้จริงหรือไม่?
Joel E Salas

2
เครื่องมือที่ทุกคนมีสถานที่ แต่การใช้หุ่นสำหรับการจัดการบัญชีผู้ใช้หรือ LDAP สำหรับการจัดเก็บไฟล์การละเมิด
Hubert Kario

1
แน่นอนว่าใช้ab ...
jldugger

9
  • หุ่นเชิดไม่ใช่ระบบการบรรเลง โดยเฉพาะอย่างยิ่ง:
    • Puppet นั้นไม่เหมาะสมกับ VM orchestration เนื่องจาก VM มีวงจรชีวิตของตนเองซึ่งควรได้รับการเคารพ
    • หุ่นเชิดไม่เหมาะสำหรับการจัดการการปล่อยแอพพลิเคชั่น / การอัพเกรดที่ซับซ้อน หุ่นกระบอกแบบสแตนด์อโลนอาจถูกนำมาใช้เพื่อสิ่งนี้ แต่อย่างน้อยมันก็ไม่ได้เป็นหุ่นเชิดในการควบคุม แต่มันเป็นสคริปต์ตัวห่อหุ้มหรือหุ่นยนต์มนุษย์ของคุณซึ่งไม่เป็นไร
  • Puppet ไม่ใช่ระบบการจัดการผู้ใช้ที่ดี (มีการจัดการทุกรายการผู้ใช้แม้ลบผู้ใช้ให้มีประสิทธิภาพดังนั้นหาวิธีอื่น)
  • Puppet ไม่ใช่ฐานข้อมูลการกำหนดค่าที่ดี (ดูที่การใช้ฐานข้อมูลภายนอกบางประเภทและ ENC, Hiera หรือกาวที่คล้ายกัน)

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

Puppet มีความสามารถในการบำรุงรักษาการกำหนดค่าพื้นฐานสำหรับเครื่องได้ดีมากและการติดตั้งเครื่องมือที่ช่วยให้คุณสามารถใช้งาน VM และรีลีส orchestration การจัดการผู้ใช้ ฯลฯ


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

2

ฉันเห็นด้วยกับ voretaq7 เป็นส่วนใหญ่ แต่มีข้อควรระวังสองสามข้อ

  • ฉันไม่ค่อยกำหนดค่าที่อยู่ IP ในหุ่นเชิดเว้นแต่ระบบจะใช้ DHCP (ฉันถือว่าผู้ให้บริการ "คลาวด์" ส่วนใหญ่ทำสิ่งนี้) ฉันเคยมีสถานการณ์ที่ฉันทำลายการกำหนดค่าเครือข่ายด้วยหุ่นกระบอก แต่ไม่สามารถแก้ไขได้ด้วยหุ่นกระบอกเนื่องจากโหนดไม่มีวิธีใด ๆ ในการติดต่อกับผู้ดูแลหุ่นกระบอก

  • ฉันค่อนข้างมั่นใจในความเชื่อของฉันว่าการจัดการอัปเดตอยู่ในมือของเครื่องมือระบบและฉันไม่เห็นว่าการใช้หุ่นเชิดเป็น cron ที่ได้รับการยกย่องเพื่อการปรับปรุง


1

ในกรณีของฉันฉันมีสคริปต์ bootstrap ซึ่งโหลดการตั้งค่าระบบขั้นต่ำ (Ubuntu): Ruby, Rubygems, build-essential, git, ฯลฯ หุ่นกระบอกเล็กของฉันถูกเก็บไว้ภายใต้การควบคุมเวอร์ชันและฉันก็โคลนพื้นที่เก็บข้อมูล จากนั้นสคริปต์บูตของฉันทำให้สมมติฐานที่ถูกต้องและพยายามที่จะhostname --shortpuppet apply /root/infrastructure/puppet/hosts/$( hostname --short ).pp

ในการตอบคำถามของคุณ:

  • สคริปต์ของฉันใช้การเชื่อมต่อเครือข่ายพื้นฐาน (DNS, IP) และไม่จัดการหรือเปลี่ยนแปลง
  • สคริปต์ของฉันถือว่าข้อมูลประจำตัวของเครื่องนั้นถูกต้องและไม่เปลี่ยนแปลง
  • สคริปต์ของฉันถือว่าทับทิม / RubyGems / Git เป็นปัจจุบัน แต่จะจัดการกับมันได้หลังจากนั้น

0

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


2
ไม่ต้องเปลี่ยนเกตเวย์เริ่มต้นบนเซิร์ฟเวอร์ 100+ ด้วยมือใช่ไหม โชคดีคุณ;)

@EricDANNIELOU ผมคิดว่าอาจจะนำมาเป็น +1 สำหรับการปล่อยให้หุ่นจัดการการกำหนดค่า IP ของการเชื่อมต่อเครือข่าย)
Luke404

@EricDANNIELOU ลองทำสิ่งนี้ด้วย bash, "for" รอบและการอนุญาตผู้ใช้ที่เหมาะสม (sudo to root หรือ root โดยตรง) และ sed / perl / etc :)
Evgenii Iablokov

1
ฉันไม่คิดว่าทุบตี "สำหรับ" วงจรและสคริปต์ sed / awk / vi สกปรกจะปลอดภัยกว่า scm สำหรับการกำหนดค่าเครือข่าย และเมื่อคุณตั้งค่าหุ่นกระบอกสำหรับทุกอย่างแล้วมันไม่สะดวกที่จะใช้ ssh "for" loop สำหรับการกำหนดค่าเครือข่ายเท่านั้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.