ใช้ git เพื่อจัดการ / etc?


15

ฉันกำลังคิดเกี่ยวกับระบบที่/etcถูกติดตามในที่เก็บ git ระยะไกล ฉันกำลังคิดเกี่ยวกับเวิร์กโฟลว์คอมไพล์ที่ทุกเครื่องโฮสต์ที่สาขาแตกต่างกัน

ทุกรุ่นก่อนหน้าในทุกเครื่องสามารถติดตามเปรียบเทียบและผสานได้อย่างง่ายดาย

หากการ/etcปรับเปลี่ยนต้องกระทำบนเครื่องหลายเครื่องสามารถทำได้ง่ายโดยสคริปต์การรวมบางอย่าง

ในกรณีที่มีการ/etcเปลี่ยนแปลง"ไม่พึงประสงค์" สิ่งนี้สามารถมองเห็นได้ดี

มีใครใช้การกำหนดค่าแบบนี้อยู่แล้ว? มีปัญหาด้านความปลอดภัยหรือไม่?


6
มีสิ่งetckeeperที่ถูกใช้ไปแล้วในหลาย ๆ ระบบ มันไม่ได้มีคุณสมบัติทั้งหมดที่คุณขอ เช่นมีที่เก็บหนึ่งรายการต่อโฮสต์ไม่ใช่ที่เก็บส่วนกลาง
jofel

ไฟล์ใดที่คุณสนใจหรือไฟล์ที่ไม่ต้องการเปลี่ยนแปลงในอดีต? ฉันถามเพราะฉันคิดว่า Git ไม่ใช่วิธีที่ถูกต้องในการแก้ปัญหาที่เกิดขึ้น ณ จุดอื่นในเวิร์กโฟลว์ของคุณ เพิ่มเติม: หากมีคนลืมที่จะยอมรับการเปลี่ยนแปลงหลายครั้ง Git ไม่มีค่า คุณช่วยอธิบายสภาพแวดล้อมของคุณได้ไหม? คุณมีการทดสอบและ QA envrionments เหมือนกับการผลิตหรือไม่ คุณมีมากกว่าสองหรือสามครอบครัวที่มีประเภท / วัตถุประสงค์เดียวกันหรือว่ามันต่างกันหรือไม่? มีความสำคัญมากกว่าอะไร: เปรียบเทียบการกำหนดค่าโฮสต์หรือติดตามการกำหนดค่าโฮสต์หนึ่งช่วงเวลา
ลองจับในที่สุด

คำตอบ:


8

โปรแกรมetckeeperจะจัดการ/etcในgitคุณเพียงแค่ต้องเปลี่ยนค่าเริ่มต้น VCS ส่วนหลังจากbzrไปในgit/etc/etckeeper/etckeeper.conf

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


6

ปัญหาเกี่ยวกับการติดตามการกำหนดค่าสำหรับ/etcในgitนั่นคือทั้งหมดที่คุณได้รับจากการทำเช่นนี้เป็นรุ่นควบคุม (ส่วนใหญ่gitสามเณรไม่ได้รู้วิธีการtagและbranchถูกต้องน่าเพื่อที่จุดนั้น) และความสามารถในการย้อนกลับ (อีกครั้งถ้าคุณศศภอ' ทีtaggingอย่างถูกต้องคุณจะไม่ได้อะไร แต่บันทึกไปยังคนตำหนิบริการ); แต่คุณสูญเสียการสร้างเทมเพลต (เทมเพลทไม่สามารถทำได้เพราะ git ไม่ได้ให้สิ่งนั้น) และปรับขนาด (คุณไม่สามารถใช้การกำหนดค่าที่อื่นได้โดยเฉพาะถ้าคุณใช้ฐานข้อมูลแบบกระจายเช่น Elasticsearch) และการจัดการระบบอัตโนมัติ (อีกครั้ง )

สิ่งที่คุณกำลังมองหาคือการจัดการการกำหนดค่า ; ที่ความสัมพันธ์ในtemplating , gitและการเขียนสคริปต์ขั้นพื้นฐานในการจัดการการกำหนดค่า นี้แน่นอนเป็นไปลงทิศทางของ DevOps และโครงสร้างพื้นฐานเป็นรหัส

เพื่อเพิ่มนี้; Ansible มีansible-pullซึ่งสามารถดึง repo ล่าสุดของ playbooks ของคุณจากgit; เช่นเดียวกันสำหรับเชฟ etckeeperโดยทั่วไปผู้ดูแลระบบลินุกซ์ที่ทันสมัยไม่ควรใช้สิ่งที่ต้องการ เชฟยังมีโหมดไคลเอนต์เซิร์ฟเวอร์ที่คุณสามารถจัดการระบบทั้งหมดที่มีchef-clientอยู่บนพื้นฐานของenvironment, rolesและตำรารุ่น; สิ่งที่คุณไม่สามารถทำได้ด้วยตัวเองgitและในระดับ


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