มีโซลูชันใดบ้างที่อนุญาตให้ใช้การควบคุมการแก้ไขสำหรับไฟล์การกำหนดค่าเซิร์ฟเวอร์ [ปิด]


85

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

ฉันสนใจส่วนใหญ่ในการแก้ปัญหา Unix / Linux แต่จะอยากรู้อยากเห็นการใช้งานของ Windows เช่นกัน


ดูเหมือนว่าจะทำซ้ำหรือเกี่ยวข้องกับคำถามนี้มากserverfault.com/questions/3852/…
Zoredache

คำตอบ:


52

ฉันได้ทดสอบสิ่งนี้ที่บ้าน (~ โฮสต์ 3 แห่ง) ซักพักแล้วลอง scms ที่แตกต่างกัน (RCS, Subversion, git) การตั้งค่าที่ใช้งานได้ดีสำหรับฉันตอนนี้คือคอมไพล์ด้วยsetgitpermsเบ็ด

สิ่งที่คุณต้องพิจารณา:

การจัดการการอนุญาตของไฟล์และการเป็นเจ้าของ

  • RCS: ทำสิ่งนี้โดยกำเนิด
  • การโค่นล้ม: ครั้งสุดท้ายที่ฉันพยายามคุณต้องใช้เสื้อคลุมรอบ ๆsvnเพื่อทำสิ่งนี้
  • git: setgitpermshook จัดการเรื่องนี้อย่างโปร่งใส (ต้องการ git รุ่นล่าสุดที่ค่อนข้างสนับสนุนการpost-checkoutขอ hooks)

นอกจากนี้หากคุณไม่ต้องการ/etcควบคุมภายใต้เวอร์ชันทั้งหมด แต่เฉพาะไฟล์ที่คุณแก้ไข (เช่นฉัน) จริง ๆ คุณจะต้องมี scm ที่รองรับการใช้งานประเภทนี้

  • RCS: ใช้ได้กับไฟล์เดียวเท่านั้น
  • การโค่นล้ม: ฉันพบว่ามันยุ่งยาก
  • git: ไม่มีปัญหาใส่ " *" ใน.gitignoreไฟล์ระดับบนสุดและเพิ่มเฉพาะไฟล์ที่คุณต้องการใช้git add --force

ในที่สุดก็มีบางส่วนที่มีปัญหาภายใต้ไดเรกทอรี/etcที่แพคเกจสามารถวางตัวอย่างการตั้งค่าที่อ่านแล้วโดยโปรแกรมบางส่วนหรือภูต ( /etc/cron.d, /etc/modprobe.dฯลฯ ) บางโปรแกรมเหล่านี้ฉลาดพอที่จะไม่สนใจไฟล์ RCS (เช่น cron) บางโปรแกรมไม่ได้ (เช่น modprobe) สิ่งเดียวกันกับ.svn ไดเรกทอรี ข้อดีอีกอย่างสำหรับ git (สร้าง.git ไดเรกทอรีระดับบนสุดหนึ่งไดเรกทอรีเท่านั้น)


1
การโค่นล้มต้องการ asvn svn.collab.net/repos/svn/trunk/contrib/client-side/asvn ไฟล์เก็บถาวร SVN (asvn) จะอนุญาตให้บันทึกชนิดไฟล์ที่ไม่ได้จัดการโดย svn ปัจจุบันนี้รวมถึงอุปกรณ์ symlink และการเป็นเจ้าของไฟล์ / สิทธิ์
Cristian Ciupitu

คุณมีบทความที่จะแสดงวิธีการตั้งค่า hooks ที่คุณใช้หรือไม่?
grufftech

การเขียนสั้น ๆ อยู่ที่นี่: jottit.com/jg8h7
8jean

นี่คือโพสต์เกี่ยวกับการตั้งค่าบางอย่างเช่นนี้ใน Arch Linux ARM ควรใช้อย่างเท่าเทียมกันที่นี่ zduck.com/2012/storing-your-raspberry-pi-config-in-git
silent__ แม้ว่า

28

ฉันได้ทำมันอย่างไม่เป็นทางการกับคอมไพล์ แต่มียังetckeeperโครงการซึ่งเป็นการนำ completist และรายละเอียดเพิ่มเติม


4
etckeeper นั้นดีจริงๆ - มันจัดการการคืนค่าสิทธิ์ (ไม่สนับสนุนโดย git, hg, ฯลฯ ) และรองรับแบ็กเอนด์ที่คุณเลือก (รวมถึง git, hg, bazaar และอื่น ๆ ) นอกจากนี้ยังมีการรวมเข้ากับ APT เพื่อให้ทุกครั้งที่คุณทำการดำเนินการ apt-get, ที่เก็บ / etc จะถูกคอมมิตและทำการข้ามคืน ฉันเคยใช้มันมาระยะหนึ่งแล้วโดยรวมแล้วมันดีกว่าการใช้ Vanilla VCS ถ้าเพียง แต่สำหรับฟีเจอร์การอนุญาตเท่านั้น
RichVel

23

อีกทางเลือกหนึ่งคือการใช้เครื่องมือกำหนดค่าเซิร์ฟเวอร์อัตโนมัติเช่นPuppetหรือCfengineเพื่อเขียนสคริปต์การกำหนดค่าเซิร์ฟเวอร์ของคุณในภาษาที่ประกาศ

มันเป็นงานพิเศษสำหรับ Front-end แต่การใช้ยูทิลิตีอย่าง Puppet ช่วยให้คุณสามารถสร้างและกำหนดค่าเซิร์ฟเวอร์โดยอัตโนมัติด้วยการแทรกแซงของมนุษย์เพียงเล็กน้อย


5
ใช่ แต่คุณควรแก้ไขการกำหนดค่า Puppet / CFengine ด้วย ฉันยังเป็นแฟนของการแก้ไขควบคุมการส่งออกเพื่อให้คุณสามารถตอบคำถามที่ว่า "สิ่งที่เป็นการตั้งค่าในวัน x หรือไม่" เช่นเดียวกับ "การกำหนดค่าควรเป็นไปตามหุ่นกระบอกอย่างไร" และเชื่อมโยงอินพุตกับเอาต์พุตสำหรับการแก้ไขปัญหาระบบการจัดการการกำหนดค่า
ร็อบ Chanter

10

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


6

ฉันได้ดูเป็นพ่อครัวเมื่อเร็ว ๆ นี้ ไม่เพียง แต่จะเก็บtemplatable (.erb) configs ไว้ในการควบคุมเวอร์ชันเท่านั้น แต่ยังช่วยให้คุณสามารถดำเนินการต่าง ๆ ได้ (เช่นการเริ่มบริการใหม่หลังจากที่คุณอัปโหลด config ไปยังโหนด) Chef ช่วยในการจัดการบรรจุภัณฑ์เพื่อให้คุณสามารถตรวจสอบการพึ่งพากับโหนดใด ๆ ที่คุณเชื่อมต่อกับ (เช่นจะต้องมีการติดตั้งแพคเกจ sudo) ดูเหมือนว่า Chef จะสามารถขยายได้อย่างง่ายดายใน Ruby ดังนั้นหากคุณมีกระบวนการที่กำหนดเองใด ๆ ที่คุณสามารถเพียงแค่สคริปต์ออกภายในกรอบที่ให้ไว้

แต่ยังไม่ได้ลองและคุณต้องติดตั้ง Ruby บนไคลเอนต์และเซิร์ฟเวอร์ด้วยอัญมณีที่เหมาะสม (นี่มันไม่ยากเลย) โดยรวมแล้วดูเหมือนง่ายต่อการจัดการเซิร์ฟเวอร์หลายเครื่องในครั้งเดียว


เราใช้ Chef อย่างหนัก (เซิร์ฟเวอร์มากกว่า 60 ตัว) ค่อนข้างประสบความสำเร็จ สูตรและไฟล์การกำหนดค่าทั้งหมดจะถูกตรวจสอบในการโค่นล้ม
organicveggie

3

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

ฉันชอบ Mercurial เพราะมันเป็นเพียงชุดของไฟล์ที่มีข้อมูลเมตาบางส่วนเก็บไว้ในไดเรกทอรีที่ซ่อนอยู่ (ง่ายต่อการจัดการเข้าใจง่ายใช้งานง่าย)

ไฟล์ Puppet ของฉันอยู่ที่ / usr / local / etc / puppet / (FreeBSD 7.1) ทั้งหมดนี้ใช้เพื่อเพิ่ม Mercurial ให้กับมัน:

> cd /usr/local/etc/puppet
> hg init

การเปลี่ยนแปลงทั้งหมดจะกระทำโดยใช้ "hg กระทำ" อย่างง่าย หากการเปลี่ยนแปลงมีบางอย่างฉันสามารถย้อนกลับเซิร์ฟเวอร์ทุก ๆ ไฟล์เป็นไฟล์เวอร์ชั่นที่ระบุ (เช่น sudoers) ด้วยคำสั่งเดียว

คำนำยอดเยี่ยมสำหรับ Mercurial


3

ฉันใช้การโค่นล้มบนเซิร์ฟเวอร์ที่ฉันจัดการ ทำงานได้ดี ฉันได้ตั้งค่า อินสแตนซ์Tracแล้วดังนั้นเราจึงมีมุมมองไทม์ไลน์ระบบจองตั๋วการเรียกดูและอื่น ๆ

การใช้ symlink, cron และ subversion ฉันได้ตั้งค่าการกระจายการกำหนดค่าอัตโนมัติตามที่เก็บ subversion ซึ่งเซิร์ฟเวอร์ Linux ทุกตัวจะอัปเดตที่เก็บโดยใช้svn updateสคริปต์ (เช่นสคริปต์ไฟร์วอลล์)


2

นี่คือกรณีการใช้งานจริง: Subversion ที่ใช้ในการจัดการไฟล์การกำหนดค่าบนเซิร์ฟเวอร์ที่แตกต่างกัน 4 แห่ง ฉันขอแนะนำให้ใช้การควบคุมเวอร์ชันสำหรับไฟล์การกำหนดค่าด้วยเหตุผลเดียวกับที่คุณใช้กับรหัส - มันคือการสำรองข้อมูลและปุ่มยกเลิกทั้งหมดในที่เดียว หากฉันจัดการเซิร์ฟเวอร์จำนวนมากขึ้นและมีความใกล้ชิดกับการกำหนดค่ามากขึ้นฉันจะใช้ Puppet อย่างที่อธิบายไว้ในคำตอบของ berberich

แนวคิดก็คือคุณสามารถมีที่เก็บหนึ่งที่คุณสามารถเช็คเอาต์โฟลเดอร์เฉพาะบนเซิร์ฟเวอร์ (เช่น / var / named /) ดังนั้นฉันทั้งสองมีประวัติและสำรองไฟล์การกำหนดค่า (สำรองเป็นโบนัสถ้าคุณทำผิดพลาด ของการใช้แอพลิเคชันการกำหนดค่า GUI ที่ผ้าเช็ดทำความสะอาดมือเพิ่มเติมแก้ไขของคุณไอผู้ดูแลระบบเซิร์ฟเวอร์ใน Mac OS X Server ไอ ) จากนั้นง่ายต่อการทดสอบบนเซิร์ฟเวอร์ทดสอบและอัพเดตเซิร์ฟเวอร์ที่ใช้งานจริงด้วยไฟล์ที่ทำงานได้โดยไม่ต้องคัดลอกไฟล์ด้วยตนเอง


1

ฉันได้สร้างโครงการไม่กี่ปีที่ผ่านมาเพื่อทำสิ่งนี้: Savon

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


0

การโค่นล้มนั้นง่ายต่อการติดตั้งและใช้งานและมีทรัพยากรมากมาย:

พื้นฐานวิธีการ

หนังสือ SVN

ภาพรวมการจัดการเอกสาร


ฉันเห็นด้วยถ้าคุณกำลังใช้การชำระเงินของ windows ละเมิดลิขสิทธิ์ svn มันใช้งานง่ายมาก
องค์ประกอบ

0

การเปลี่ยนแปลงส่วนใหญ่ของเราได้รับการจัดการด้วยระบบ Help Desk ของเราแม้จะเป็นประเภทการบำรุงรักษาตามปกติ เราได้ย้ายเอกสารของเราไปเป็น wiki อย่างช้าๆเพื่อการใช้งานของเราเองและสิ่งที่เราเผยแพร่ไปยังผู้ใช้ปลายทาง โพสต์การเปลี่ยนแปลงการกำหนดค่าและการสนทนาที่อยู่เบื้องหลังมันเป็นสิ่งที่ดีที่ได้เปิดบนอินทราเน็ตของเรา


0

เป็นเวลาหลายปีที่ฉันใช้ rcs สำหรับไฟล์ฉันเริ่มแก้ไข แต่สองสามปีที่ผ่านมาฉันเริ่มวางทั้งหมด / etc ภายใต้การควบคุมคอมไพล์ มันต้องมีงานเพื่อตรวจสอบไฟล์ในหน่วยย่อย (บางครั้งฉันหันไปเช็คอิน "การปรับปรุงต่างๆ" ขนาดใหญ่) และฉันได้เขียนสคริปต์บางอย่างเพื่อช่วยในเรื่องนี้

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