Làm cách nào tôi có thể đạt được quản lý cập nhật giống như của Git-tinh cho Linux?


14

Tôi muốn quản lý các bản cập nhật của hệ thống Linux của mình theo cách tương tự như Git , bằng cách có thể di chuyển qua lại trong "bản sửa đổi". Làm thế nào tôi có thể làm điều đó?


Là một quản trị viên hệ thống Linux / Unix, người liên quan đến các khía cạnh sâu sắc hơn về cách thức hoạt động của các hệ thống Linux / Unix, tôi không thể tưởng tượng được những thay đổi nào sẽ cần phải thực hiện đối với hệ thống của họ để yêu cầu hệ thống sửa đổi giống như Git. Điều chính có thể thay đổi trên các hệ thống này là cài đặt phần mềm và tập tin cấu hình. Các tập tin cấu hình dễ dàng sao lưu thủ công và theo dõi. Và nó rơi vào một bộ cài đặt nó và quên đi suy nghĩ của nó.
JakeGould 30/1/2015

Câu trả lời:


12

Có lẽ bạn nên xem NixOS , sử dụng trình quản lý gói Nix .

NixOS là một bản phân phối GNU / Linux nhằm cải thiện tình trạng hiện đại trong quản lý cấu hình hệ thống. Trong các bản phân phối hiện có, các hành động như nâng cấp rất nguy hiểm: nâng cấp gói có thể khiến các gói khác bị hỏng, nâng cấp toàn bộ hệ thống kém tin cậy hơn nhiều so với cài đặt lại từ đầu, bạn không thể kiểm tra một cách an toàn kết quả của thay đổi cấu hình sẽ là gì, bạn không thể dễ dàng hoàn tác các thay đổi đối với hệ thống, v.v.


12

Những gì bạn có thể đang tìm kiếm được gọi là công cụ quản lý cấu hình . Có một số lựa chọn nhưng nó rất chủ quan cái nào là tốt nhất trong mọi tình huống.

Cá nhân tôi thấy Puppet khá dễ để bắt đầu, nhưng các lựa chọn phổ biến khác là SaltAnsible .


Tôi đã sử dụng con rối trong mơ hồ, nhưng tôi không nhớ mình có thể hoàn tác một số thứ lộn xộn mà tôi đã làm trong hệ điều hành của mình ...
Patrick Villela

4
Các công cụ quản lý cấu hình thường không cung cấp chức năng "rollback". "Rollback" đang thổi bay hệ thống và sử dụng công cụ quản lý cấu hình để cấu hình lại hệ thống. Ví dụ: bạn có thể sử dụng một công cụ cung cấp kim loại trần như Dao cạo để định dạng và cài đặt lại HĐH. Sau đó, nó chuyển sang một công cụ như Chef để áp dụng cấu hình.
ctc

2
Là phù thủy dự định? :)
Ruslan

Có phải cengine đã chết? Tôi nhớ đã cố gắng để có được một cái gì đó tôi hài lòng để sử dụng trên cụm nhỏ của tôi khi tôi là sysadmin. Nhưng tôi chưa bao giờ kết thúc việc triển khai nó.
Peter Cordes

Với bất kỳ công cụ nào trong số này, bạn có được quyền kiểm soát phiên bản bằng cách giữ các tệp cấu hình chính của bạn trong git. Những gì bạn nhận được từ chúng là tập trung và giảm cấu hình của toàn bộ hệ thống xuống một trong một vài tệp văn bản.
Peter Cordes

10

Điều này có thể quá mức cần thiết cho câu hỏi của bạn, nhưng cách dễ nhất để có thể hoàn nguyên các thay đổi lớn ở cấp hệ thống là chụp nhanh:

https://en.wikipedia.org/wiki/Snapshot_%28computer_st Storage% 29

Bạn đã không đề cập đến các chi tiết cụ thể của giàn khoan của bạn, nhưng khi bạn quen thuộc với git, sẽ không quá sức để tưởng tượng bạn có thể quan tâm đến việc sử dụng một hệ thống tệp phức tạp hơn. Nếu bạn sử dụng hệ thống tệp thế hệ tiếp theo (bỏ qua tên click-mồi-y), bạn sẽ có thể "tua lại" toàn bộ hệ thống của mình bằng một lệnh đơn thuần được bấm vào thiết bị đầu cuối của bạn. Bất kỳ và tất cả các thay đổi được thực hiện sẽ được hoàn nguyên với rất ít sự chậm trễ / nỗ lực. ZFS sẽ là lựa chọn tốt nhất của bạn và bạn có thể tham khảo bài viết Ars tuyệt vời này để xem liệu nó có phải là thứ đáng giá cho bạn không (có nhiều tính năng tuyệt vời khác nữa):

http://arstechnica.com/inif-t Technology / 2014/02 / ars-walk--US-the-zfs-next-gen-filesystem-on-linux /


2
Một tùy chọn khác là btrfs, BTW có hỗ trợ doanh nghiệp chính thức từ Ubuntu, SUSE> = 11, Oracle. Mặc dù nó vẫn đang được phát triển và blahblahblah, nó đáng tin cậy cho việc sử dụng máy tính để bàn hàng ngày và thực hiện chết tiệt tốt.
Ignis

1
@ignis: Gần đây tôi đã gặp phải một Btrfs không nhất quán và không thể phục hồi mặc dù có RAID 5 bên dưới và nghe về hai trường hợp khác đang hoạt động. Vì vậy, tôi sẽ không coi nhẹ những cảnh báo về việc nó chưa sẵn sàng để sử dụng sản xuất. Tôi đã không muốn tin vào chính mình trước khi tôi gặp phải nó. Có thể là do RAM xấu, có lẽ, đó là một trong những lý do tại sao người ZFS khuyên mạnh mẽ việc sử dụng bộ nhớ ECC. Tôi đoán điều tương tự có thể áp dụng cho Btrfs.
MvG

6

Tùy thuộc vào ý nghĩa của "cập nhật", bạn có thể quan tâm đến các công cụ quản lý cấu hình như etckeeper , cho phép bạn tự động ghi lại các thay đổi vào cấu hình hệ thống và trở lại cấu hình trước đó.

Nếu Git là một công cụ quen thuộc và nếu "cập nhật", bạn có nghĩa là "cập nhật cấu hình hệ thống" thay vì "cập nhật gói hệ thống" hoặc "cập nhật cho tất cả các tệp được lưu trữ trên máy chủ" thì đây có thể là thứ bạn đang tìm kiếm cho

Bạn nên cân nhắc rằng liệu bạn có đang sử dụng các công cụ như Puppet, Ansible, Etckeeper, v.v. Cách tiếp cận phù hợp sẽ phụ thuộc vào tình huống của bạn (ví dụ: chụp nhanh sẽ không phù hợp với hệ thống sản xuất nơi bạn có thể mất đơn đặt hàng của khách hàng khi quay lại).



1

Nếu bạn thực sự muốn quản lý toàn bộ hệ thống của mình (bao gồm cả phiên bản kernel) như git, bạn đang tìm kiếm NixOS .

Đối với phiên bản ít liên quan hơn, bạn có thể sử dụng trình quản lý gói của NixOS, nix, từ hầu hết mọi unix. Nix có thể được cài đặt như một người dùng đơn giản, mặc dù việc cài đặt nó là root dễ dàng hơn. Khi nix được cài đặt, bạn có thể sử dụng nó để cài đặt các gói như một người dùng không có đặc quyền và nó chạy tốt cùng với trình quản lý gói hiện tại của bạn, không có xung đột. Nó cũng rất dễ dàng để loại bỏ hoàn toàn nix khỏi hệ thống của bạn, vì vậy thực sự không có lý do gì để không thử nó. ;-)

Để trực tiếp giải quyết câu hỏi của bạn, Nix định nghĩa hệ thống được cài đặt hoàn chỉnh của bạn là một môi trường, giống như một cam kết git, một con trỏ tới một bộ con trỏ tới các phiên bản rất cụ thể của tất cả các gói đã cài đặt.

Khi Nix nâng cấp gói, nó tạo ra một môi trường mới, trỏ đến một bộ con trỏ mới cho các gói (chủ yếu là các gói hiện có, đối với các gói chưa được cập nhật; một lần nữa, điều này rất giống với cam kết git mới, chủ yếu là trỏ đến các tệp không thay đổi trước đó và một vài phiên bản mới của các tệp đã sửa đổi).

Tất nhiên, việc chuyển sang phiên bản trước của môi trường là không quan trọng và, tôi tin rằng, fork (nghĩa là tạo ra một môi trường mới dựa trên môi trường cũ hơn so với trước đây). Một môi trường có thể được tải cho một shell cụ thể (trên thực tế, đó là tập hợp các biến môi trường có sẵn cho shell, do đó có tên), do đó bạn cũng có thể dễ dàng có các môi trường khác nhau cho các dự án khác nhau trên cùng một máy. Không còn vấn đề phụ thuộc vì một dự án không liên quan cần một phiên bản khác của thư viện!

NixOS đưa nó lên cấp độ tiếp theo và quản lý toàn bộ máy tính của bạn, bao gồm cả kernel, theo cách tương tự, cho phép nâng cấp rủi ro rất thấp của toàn bộ máy.

Tôi chưa đọc xong tất cả, nhưng tôi khuyên dùng thuốc Nix của lethalman như một lời giới thiệu về Nix.


0

Nếu bạn là loại thử nghiệm, bạn có thể thử chỉ kiểm tra toàn bộ hệ thống tệp của mình vào kho lưu trữ git cục bộ. Điều này sẽ ... thú vị, tôi nghĩ vậy.

  1. git init trong thư mục gốc /
  2. Xây dựng một .gitignore cho root mà bỏ qua các thư mục có nội dung thay đổi thường xuyên hoặc không nên được kiểm tra trong:
    • / dev
    • /chạy
    • / tmp
    • / Proc
    • / mất + tìm thấy
    • ...
  3. Thêm vào các loại tệp cụ thể .gitignore mà bạn có thể muốn loại trừ:
    • * .tmp
    • * .log
    • ...
  4. Thêm nội dung ban đầu của bạn với git add -A .
  5. Cam kết ảnh chụp nhanh với git commit -m "Initial Snapshot"
  6. Sử dụng máy tính của bạn
  7. Định kỳ thêm ảnh chụp nhanh git commit -Am "Snapshot X"hoặc tương tự

Một số lợi ích sẽ là:

  • Các công cụ quen thuộc cho lịch sử sửa đổi, thích gitkgit diff
  • Bất kỳ livecd hoặc hệ điều hành khác có git đều có thể khôi phục bản sao lưu của bạn
  • Bạn có thể đẩy toàn bộ hệ thống của mình lên github và khôi phục nó cho các máy khác hoặc chia sẻ nó với mọi người ...?
  • Sự phân nhánh sẽ nhanh chóng và trực quan
  • /, thư mục git trong thư mục gốc của bạn sẽ truyền cảm hứng cho sự tự tin lạm dụng hệ thống của bạn và phiêu lưu hơn, tương tự như mã nguồn
  • Mỗi ảnh chụp nhanh sau đó sẽ tương đối nhỏ so với một số giải pháp sao lưu khác
  • Sẽ là tuyệt vời để xem xét và theo dõi thay đổi cấu hình trong / etc
  • Bạn có thể tiên phong điều này và gọi nó là linit - linux trong git.
  • Khét tiếng

Một số điều kỳ lạ có thể bao gồm:

  • Không có khả năng bạn có thể khôi phục / kiểm tra các nhánh hoặc sửa đổi với các thay đổi quan trọng hoặc thay đổi các tệp đang sử dụng trong khi chạy hệ thống - có thể có USB khởi động tối thiểu với git cho mục đích này
  • Cam kết ban đầu khá lớn
  • Đã kiểm tra trong các thư mục .git tiếp theo -?
  • githy vọng hoạt động như mong đợi khi bạn ở trong thư mục mã nguồn được lồng trong bộ gitchứa gốc .
  • / etc / passwd và / etc / bóng sẽ cần được đưa vào kho lưu trữ để duy trì và theo dõi người dùng và khôi phục chúng cho các máy khác, nhưng bây giờ bất kỳ ai có quyền truy cập xem (có lẽ trên github) đều có thể thấy thông tin nhạy cảm như nội dung, quyền, và băm mật khẩu của người dùng của bạn.

3
Cách tiếp cận này rất có thể sẽ thất bại khủng khiếp, vì git sẽ không xử lý các quyền đúng cách. Giả sử bạn làm tất cả những thứ đó với quyền root, về cơ bản, bạn sẽ điều khiển toàn bộ hệ thống tập tin thành root và đến lượt nó, sẽ phá vỡ các hoạt động ghi. Chẳng hạn, bạn chụp ảnh nhanh, khôi phục nó, chủ sở hữu thư mục nhật ký apache trở thành root (thay vì http), apache không thể ghi vào thư mục, không khởi động được. Tôi biết rằng, vì tôi đã thử một điều tương tự, nhưng ở quy mô nhỏ hơn nhiều, và thậm chí trên đó, đã có vấn đề.
Tuncay Göncüoğlu

Hãy xem Nix, như được đề xuất trong một câu trả lời khác;)
Michael Pankov

Tốt để biết! Tôi nghĩ rằng nó đã xử lý các quyền, ít nhất là octet, vì các tập lệnh của tôi giữ lại cờ x trên bản sao, nhưng tôi không nghĩ về quyền sở hữu tập tin và nhóm
Ehryk

Dường như có các công cụ bổ sung sẽ giữ lại toàn quyền và quyền sở hữu, nếu bạn yêu cầu làm như vậy. Một công cụ như vậy là git-cache-metađây là danh sách
Ehryk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.