Linux Bulk / Remote Administration


10

นอกเหนือจากโครงสร้างพื้นฐานด้านไอทีภายในของเราเรามีเครื่อง Linux ประมาณ 500 เครื่องที่ให้บริการสำหรับโลกออนไลน์ พวกเขาถูกจัดกลุ่มเป็นกลุ่มเช่นฐานข้อมูล, ผลิตภัณฑ์, NFS, BackOffice เป็นต้น นอกจากนี้ยังมีการจัดการโดยผู้ให้บริการภายนอกตามข้อกำหนดและข้อกำหนดของเรา

อย่างไรก็ตามเราประสบปัญหามากมายระหว่างการพัฒนาซอฟต์แวร์การเปิดตัวและการปรับใช้โดยเฉพาะอย่างยิ่งเนื่องจากสภาพแวดล้อมการพัฒนาและการจัดเตรียมนั้นแทบไม่มีอะไรเหมือนกันกับระบบที่ใช้งานจริง .

ดังนั้นฉันจึงพยายามสร้างเครื่องเสมือนคัดลอกระบบสดต่าง ๆ ให้มากที่สุดเท่าที่จะเป็นไปได้และเตรียมให้พวกเขาเชื่อมต่อกับเช่นฐานข้อมูลการพัฒนาแทนที่จะเป็นระบบ "ของจริง" ที่โปร่งใสสำหรับนักพัฒนา (ไม่ใช่root) มันใช้งานได้ดี แต่ ...

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

เราจะให้รูปภาพจำนวนมากแก่นักพัฒนาเพื่อเรียกใช้ในพื้นที่ (VirtualBox) แผนกควบคุมคุณภาพ จะได้รับกลุ่มเสมือน (XEN หรือ Hyper-V) ถ้าฉันต้องการจัดหาโมดูลเซิร์ฟเวอร์เพิ่มเติมให้กำหนดเส้นทางการเชื่อมต่อฐานข้อมูลใหม่หรือเพียงแค่ต้องการอัปเดตทุกอย่างที่ได้รับจากตัวจัดการแพ็คเกจ ... ฉันจะทำอย่างไรโดยไม่ถูกบังคับให้เข้าสู่ระบบทุกระบบและ / หรือ ขอให้เพื่อนร่วมงานของฉันดาวน์โหลดและเรียกใช้สคริปต์ติดตั้งหรือไม่

ฉันเชื่อว่ามีทางออกมากมาย อย่างไรก็ตามฉันโง่เกินไปที่จะป้อนคำหลักที่ถูกต้องลงในเครื่องมือค้นหา ... หรือว่าปัญหานี้ไม่สำคัญอย่างที่คิด

สำหรับบันทึก:

  • เกือบทุกระบบใช้ Debian GNU / Linux 6.x "squeeze"
  • ไม่มีนักพัฒนาที่ถูกบังคับให้ใช้ระบบปฏิบัติการเฉพาะที่เวิร์กสเตชันของเขา / เธอ
  • แน่นอนว่างบประมาณมี จำกัด แต่ไม่เล็กเกินไปที่จะซื้อซอฟต์แวร์ที่เป็นกรรมสิทธิ์
  • วิธีการแก้ปัญหาที่จะเกี่ยวข้องกับผู้ให้บริการดังกล่าวของเราเป็นที่ต้องการ

คำตอบ:


15

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

  1. หุ่นเชิด
  2. พ่อครัว
  3. cfengine
  4. เบิ้ล
  5. เกลือ

ฯลฯ โดยส่วนตัวแล้วฉันอยากจะแนะนำหุ่นเชิดเพราะมีชุมชนใหญ่และมีสูตรอาหารภายนอกมากมาย สิ่งนี้ช่วยให้คุณสามารถกำหนดค่าและจัดการระบบโดยอัตโนมัติ หากคุณรวมสิ่งนี้กับที่เก็บข้อมูลของตนเองและการอัปเดตอัตโนมัติผ่านเช่นunattended-upgradesคุณสามารถอัปเดตระบบโดยอัตโนมัติ

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

คุณควรตรวจสอบการปรับใช้อัตโนมัติ (แบร์โบนและเวอร์ชวลไลเซชัน) หากคุณรวมสิ่งนี้กับการจัดการการกำหนดค่าหรือที่เก็บข้อมูลของคุณเองคุณสามารถติดตั้งและติดตั้งระบบของคุณอัตโนมัติ หากคุณต้องการเริ่มต้นด้วยการติดตั้งอัตโนมัติดูที่รูปแบบที่รองรับ libvirt เช่นเดียวกับการติดตั้งกระดูกเปลือยและมีการสนับสนุนหุ่นกระบอก หากคุณต้องการทำมันด้วยตัวคุณเองคุณสามารถดูkickstart (redhat และคณะ) หรือ "preseeding" เพื่อกำหนดค่าระบบของคุณโดยอัตโนมัติ สำหรับ Debian คุณยังสามารถใช้บางอย่างเช่นdebootstrapหรือ wrapper ชื่อgrml-debootstrap ที่สนับสนุนรูปภาพเสมือนจริง

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

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

สำหรับ Google คำหลักที่มองเข้าไปในdevops, configuration management, และit automationserver orchestration

กล่าวโดยอัตโนมัติให้มากที่สุดเท่าที่จะทำได้และไม่ต้องคิดทำเอง


1
ขอบคุณ! นั่นเป็นหลายสิ่งที่ต้องอ่าน แต่ก็ดูดีพอสมควร
mjhennig

@mjhennig ฉันเพิ่งเพิ่มข้อมูลอีกบางส่วนอีกครั้ง การใช้งาน มีทรัพยากรมากมาย แต่ที่สำคัญที่สุดคุณไม่ควรทำสิ่งใดด้วยตัวคุณเองผ่าน ssh / shell แบบกระจาย แต่มีระบบบางประเภท
Ulrich Dangel

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

3
@Arcege ฉันเพิ่งเพิ่มความคิดเห็นของคุณสคริปต์มีความจำเป็นและคุณไม่ต้องแปลงโครงสร้างพื้นฐานทั้งหมดของคุณในครั้งเดียว ส่วนที่สำคัญที่สุดคือการทำให้สิ่งต่างๆเป็นไปโดยอัตโนมัติและทำให้สามารถทำซ้ำได้ cucumber-puppetแต่ลักษณะที่สื่อความหมายของหุ่นและพ่อครัวมีลักษณะเฉพาะบางอย่างเช่นคุณสามารถทดสอบและตรวจสอบชั้นเรียนกับหุ่น แน่นอนว่าคุณสามารถพัฒนา / ขยายกรอบการทำงานของคุณเองโดยใช้ส่วนประกอบที่มีอยู่แล้ว แต่ฟังดูแล้ว OP ไม่มีอะไรเกิดขึ้นในปัจจุบันและถ้าคุณเริ่มต้นจากศูนย์ฉันคิดว่าเป็นการดีที่สุดที่จะใช้กรอบที่มีอยู่
Ulrich Dangel

ใช่ฉันเห็นด้วยกับการดำเนินการอัตโนมัติ / ทำซ้ำได้ ฉันมีสคริปต์ที่สร้างขึ้นเองโดยอัตโนมัติหรือกดปุ่มเพื่อเชื่อมต่อระหว่างระบบที่มีอยู่เช่น Jenkins / Oc4j และการรวม Subversion / Bugzilla ฉันไม่เห็นด้วยอย่างยิ่งกับความคิดเห็นของคุณ "คุณไม่ควรทำสิ่งใดด้วยตัวคุณเอง" บางครั้งเฟรมเวิร์กที่มีอยู่ไม่สามารถใช้ได้เช่นเดียวกับในสถานการณ์ของฉันฉันอธิบาย
Arcege

3

Ulrich ได้ให้คำตอบเกี่ยวกับการปรับใช้ซอฟต์แวร์และการตั้งค่าเซิร์ฟเวอร์อัตโนมัติแล้ว

หลักการที่อยู่เบื้องหลังสิ่งนี้คือ

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

คุณขอเครื่องมือที่สะดวกในการจัดการเซิร์ฟเวอร์จำนวนมาก - สิ่งที่ฉันชอบคือ cluster-ssh ( cssh) พิมพ์ครั้งเดียวและทำการเปลี่ยนแปลงบนเซิร์ฟเวอร์หลายเครื่องพร้อมกัน

หากคุณค้นพบปัญหาและมีการแก้ไขที่ลบปัญหา:

  1. ใช้การแก้ไขกับ Test / Dev / Staging / Prod (ดูด้านบน) หากใช้งานได้จริง
  2. ใช้การแก้ไขกับเทมเพลตเสมือนของคุณดังนั้นในอนาคต VM-โคลนจะไม่มีบั๊กนั้น
  3. ใช้การแก้ไขกับกระบวนการติดตั้งทางกายภาพของคุณ (เริ่มต้น / autoyast / อะไรก็ตาม)
  4. ใช้การแก้ไขกับเซิร์ฟเวอร์ทั้งหมด

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

เราใช้ Mantis (โอเพ่นซอร์ส, PHP) เพื่อจุดประสงค์นั้น


2

ฉันจัดการผลิตภัณฑ์ 30 รายการและเซิร์ฟเวอร์ไม่กี่ร้อยแห่งในหลายประเทศ ฉันเป็นผู้จัดการการกำหนดค่าซอฟต์แวร์ดังนั้นฉันจึงไม่สามารถเข้าถึงรูท (โดยการออกแบบ) อย่าสัมผัสฐานข้อมูลหรือเซิร์ฟเวอร์ของพวกเขา (อีกครั้งโดยการออกแบบ) และต้องกระโดดหลายครั้งเนื่องจากความปลอดภัยขององค์กร แต่ฉันจัดการการกำหนดค่าในการทดสอบการจัดเตรียมและการผลิตรวมถึงลิงก์ฐานข้อมูลและการเปลี่ยนแปลง ฉันมีจำนวนของสคริปต์ที่ออกไปข้างนอกไปยังเซิร์ฟเวอร์โดยใช้การรวมกันของssh, pythonและเชลล์สคริปต์

สิ่งสำคัญที่ต้องพิจารณาคือ:

  1. คุณจะมีปฏิสัมพันธ์แบบไหนกับเซิร์ฟเวอร์ของคุณ? เพียงแค่อัพโหลดไฟล์? กำลังเรียกใช้โปรแกรมบรรทัดคำสั่ง? ใช้ไคลเอนต์ X ระยะไกล?
  2. การรักษาความปลอดภัยระดับใดที่จำเป็นในการเข้าถึงเซิร์ฟเวอร์เหล่านี้ ไฟร์วอลล์เครือข่ายที่ปลอดภัย VPN หรือไม่ คือsshเพียงพอและจากสถานที่ปลอดภัยกลาง?
  3. แต่ละเซิร์ฟเวอร์สามารถทำการอัตโนมัติได้เท่าใด? คุณสามารถติดตั้งโปรแกรมบนเซิร์ฟเวอร์แต่ละตัวและเรียกใช้หรือคุณต้องการสตรีมโปรแกรมผ่านสิ่งที่ต้องการsshเรียกใช้จากระยะไกล? คุณสามารถสคริปต์มันด้วยexpectหรือเพียงแค่การเรียกบรรทัดคำสั่ง?

VirtualBox มอบเครื่องมือบรรทัดคำสั่งจำนวนมากที่คุณสามารถจัดการผ่านsshระบบหรือระบบอย่างpuppetUlrich


2
เพียงข้อเสนอแนะเล็ก ๆ virtualbox ดูที่vagrantup.comมันสามารถทำให้การสร้างภาพเสมือนเป็นไปโดยอัตโนมัติ
Ulrich Dangel

น่าเสียดายที่การเข้าถึงเครือข่ายอย่างง่ายระหว่างสภาพแวดล้อมการทดสอบระยะไกลก็เป็นไปไม่ได้ การตั้งค่าฟาร์มเสมือนจริงจะยิ่งยากขึ้น ฉันมีปัญหาในการขอให้ฝ่ายไอทีอัปเดตซอฟต์แวร์มาตรฐานด้วยสิ่งที่ล้าสมัยมานานกว่าปีเพราะมันไม่ได้เป็นส่วนหนึ่งของที่เก็บ 'RedHat มาตรฐาน'
Arcege

สิ่งที่ช่วยในประสบการณ์ของฉันซอฟต์แวร์ wrt ล้าสมัยคือการแสดงว่าซอฟต์แวร์เป็น EOL หรือมีปัญหาด้านความปลอดภัย การตั้งค่าเครือข่าย / การเชื่อมต่อมักจะทำได้ยากกว่ามากบางทีอาจพยายามเน้นว่าการเชื่อมต่อสภาพแวดล้อมการทดสอบที่แตกต่างกันช่วยประหยัดเงินลดความซับซ้อนของกระบวนการประหยัดเวลา QA หรือทำให้สภาพแวดล้อมการทดสอบสมจริงยิ่งขึ้น นอกจากนี้ยังสามารถช่วยหากคุณรับคนจากสาขาต่าง ๆ บนกระดาน
Ulrich Dangel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.