it-swarm-vi.tech

Những giải pháp nào tồn tại để cho phép sử dụng kiểm soát sửa đổi cho các tệp cấu hình máy chủ?

Trong một môi trường có nhiều quản trị viên hệ thống, tôi thấy một vài lợi thế khi thêm các tệp cấu hình máy chủ vào hệ thống kiểm soát sửa đổi. Đáng chú ý nhất là khả năng theo dõi các thay đổi, những người đã thực hiện chúng, và tất nhiên có thể quay trở lại các cấu hình làm việc đã biết.

Tôi chủ yếu quan tâm đến các giải pháp Unix/Linux, nhưng cũng sẽ tò mò về việc triển khai Windows.

85
Dave K

Tôi đã thử nghiệm điều này ở nhà (~ 3 máy chủ) một thời gian rồi, thử các scms khác nhau (RCS, Subversion, git). Thiết lập hoạt động hoàn hảo với tôi ngay bây giờ là git với hook setgitperms .

Những điều bạn cần phải xem xét:

Xử lý quyền và quyền sở hữu tệp

  • RCS: thực hiện điều này nguyên bản
  • Subversion: lần cuối tôi đã thử, bạn cần một trình bao bọc xung quanh svn để làm điều này
  • git: hook setgitperms xử lý trong suốt này (tuy nhiên cần một phiên bản git khá gần đây có hỗ trợ cho các móc post-checkout)

Ngoài ra, nếu bạn không muốn tất cả /etc Dưới sự kiểm soát phiên bản, nhưng chỉ những tệp bạn thực sự sửa đổi (như tôi), bạn sẽ cần một scm hỗ trợ loại sử dụng này.

  • RCS: chỉ hoạt động trên các tập tin duy nhất.
  • Subversion: Tôi thấy điều này là khó khăn.
  • git: không có probem, đặt "*" vào tệp .gitignore cấp cao nhất và chỉ thêm những tệp bạn muốn sử dụng git add --force

Cuối cùng, có một số thư mục có vấn đề trong /etc Trong đó các gói có thể bỏ các đoạn cấu hình mà sau đó được đọc bởi một số chương trình hoặc trình nền (/etc/cron.d, /etc/modprobe.d, V.v.). Một số chương trình này đủ thông minh để bỏ qua các tệp RCS (ví dụ: cron), một số thì không (ví dụ: modprobe). Điều tương tự với các thư mục .svn. Lại một điểm cộng lớn cho git (chỉ tạo một thư mục .git Cấp cao nhất).

52
8jean

Tôi đã thực hiện nó một cách không chính thức với git, nhưng cũng có dự án etckeeper là một triển khai chi tiết và đầy đủ hơn.

28
pjz

Một tùy chọn khác là sử dụng một công cụ cấu hình máy chủ tự động như Puppet hoặc Cfengine để kịch bản cấu hình máy chủ của bạn bằng ngôn ngữ khai báo.

Đó là công việc bổ sung ở mặt trước, nhưng sử dụng tiện ích như Puppet cho phép bạn tự động xây dựng lại và định cấu hình máy chủ với rất ít sự can thiệp của con người.

23
berberich

Tôi đã thử nghiệm với etckeeper có vẻ hoạt động khá tốt. Tôi không yêu cầu một máy chủ tập trung, có thể quan trọng trong một số tình huống. Bạn có thể sử dụng một số phụ trợ DVCS khác nhau, vì vậy bạn có thể chọn một phụ kiện quen thuộc nhất. Nó dường như hoạt động rất tốt đối với tôi, nhưng tôi chưa thử sử dụng các công nghệ khác nơi tôi làm việc để bắt đầu sử dụng nó.

10
Zoredache

Tôi đã xem xét Đầu bếp gần đây. Nó không chỉ giữ cấu hình templitable (.erb) trong kiểm soát phiên bản, mà còn cho phép bạn thực hiện các hành động (như khởi động lại dịch vụ sau khi bạn tải cấu hình lên nút). Đầu bếp giúp quản lý gói để bạn có thể xác minh phụ thuộc với bất kỳ nút nào bạn giao diện (nghĩa là phải cài đặt gói Sudo). Đầu bếp dường như có thể dễ dàng mở rộng trong Ruby, vì vậy nếu bạn có bất kỳ quy trình tùy chỉnh nào, bạn có thể chỉ cần viết kịch bản ra trong khuôn khổ được cung cấp.

Nhưng vẫn chưa thử và bạn phải cài đặt Ruby trên máy khách và máy chủ với các loại đá quý phù hợp (điều này thực sự không khó lắm). Nhìn chung, thực sự dễ dàng để quản lý nhiều máy chủ tại Một lần.

6
bluehavana

Tôi đang trong quá trình triển khai Puppet trên cơ sở hạ tầng của chúng tôi và việc giữ dữ liệu của nó trong kiểm soát phiên bản là rất thuận lợi.

Tôi thích Mercurial vì nó chỉ là một tập hợp các tệp với một số siêu dữ liệu được lưu trữ trong các thư mục ẩn (dễ quản lý, dễ hiểu, dễ sử dụng).

Các tập tin rối của tôi nằm ở/usr/local/etc/Puppet/(FreeBSD 7.1). Tất cả chỉ cần thêm Mercurial vào nó:

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

Tất cả các thay đổi được cam kết với một "cam kết hg" đơn giản. Nếu một thay đổi làm hỏng một cái gì đó, tôi có thể khôi phục mọi máy chủ đơn lẻ vào một phiên bản nhất định của tệp (giả sử, sudoers) bằng một lệnh duy nhất.

Giới thiệu tuyệt vời về Mercurial

3
sh-beta

Tôi đã sử dụng Subversion trên các máy chủ mà tôi quản lý. Hoạt động tốt. Tôi cũng đã thiết lập một ví dụ Trac , vì vậy chúng tôi có chế độ xem dòng thời gian, hệ thống bán vé, duyệt, v.v.

Sử dụng symlink, cron và Subversion Tôi cũng đã thiết lập phân phối cấu hình tự động dựa trên kho Subversion, nơi mọi máy chủ Linux cập nhật một kho lưu trữ bằng cách sử dụng svn update với tập lệnh (ví dụ: tập lệnh tường lửa).

3
Martin C.

Đây là trường hợp sử dụng ngoài đời thực: Subversion được sử dụng để quản lý các tệp cấu hình trên 4 máy chủ khác nhau. Tôi khuyên bạn nên sử dụng kiểm soát phiên bản cho các tệp cấu hình với cùng lý do bạn sẽ sử dụng chúng với mã - đó là bản sao lưu và nút hoàn tác tất cả trong một. Nếu tôi đang quản lý một lượng lớn máy chủ hơn và chúng gần gũi hơn nhiều về cấu hình, tôi sẽ sử dụng một cái gì đó như Puppet như chi tiết trong câu trả lời của berberich.

Ý tưởng là bạn có thể có một kho lưu trữ mà bạn có thể kiểm tra các thư mục cụ thể trên các máy chủ (ví dụ:/var/tên /) để tôi có lịch sử và sao lưu các tệp cấu hình (bản sao lưu là phần thưởng nếu bạn mắc lỗi về việc sử dụng ứng dụng cấu hình GUI để xóa các bổ sung đã chỉnh sửa của bạn ho Quản trị viên máy chủ trong Mac OS X Server ho). Sau đó, thật dễ dàng để kiểm tra nó trên máy chủ thử nghiệm và sau đó cập nhật máy chủ sản xuất với các tệp hoạt động mà không cần sao chép tệp thủ công.

2
Chealion

Tôi đã tạo một dự án vài năm trước để thực hiện chính xác điều này: Savon

Nó sử dụng Subversion để lưu trữ các tệp và có một số tính năng bổ sung, như theo dõi quyền sở hữu, quyền và bối cảnh SELinux. Nó cũng cho phép bạn phân chia một cách hợp lý các thay đổi hệ thống tệp của bạn theo từng lớp, do đó, ví dụ bạn có thể theo dõi các thay đổi sẽ đi đến tất cả các máy chủ web của mình.

1

Subversion rất dễ cài đặt và sử dụng và có rất nhiều tài nguyên:

Cách thực hiện cơ bản

Sách SVN

Tổng quan về quản lý tài liệ

0
Jimmie R. Houts

Hầu hết các thay đổi của chúng tôi được quản lý với hệ thống Bàn trợ giúp của chúng tôi, ngay cả đối với các công cụ loại bảo trì định kỳ. Chúng tôi đã dần dần chuyển tài liệu của mình vào wiki để sử dụng riêng và những gì chúng tôi xuất bản cho người dùng cuối. Đăng các thay đổi cấu hình và thảo luận đằng sau nó, thật tuyệt khi được mở trên mạng nội bộ của chúng tôi.

0
Waldo

Trong nhiều năm, tôi đã sử dụng rcs cho các tệp mà tôi đã bắt đầu sửa đổi, nhưng một vài năm trước tôi đã bắt đầu đặt toàn bộ/etc dưới sự kiểm soát của git. Nó đòi hỏi một số công việc để kiểm tra các tệp trong các khối lớn (đôi khi tôi dùng đến một bản kiểm tra "cập nhật khác nhau" lớn) và tôi đã viết một số tập lệnh để trợ giúp việc này, nhưng v.v.

0
hlovdal