Quản lý cấu hình thông qua các gói phiên bản


8

Đối với các máy chủ chúng tôi quản lý, ông chủ của tôi có tầm nhìn về quản lý cấu hình thông qua các gói được phiên bản (trong trường hợp cụ thể của chúng tôi, các gói debian do fpm xây dựng). Đây là để thực hiện:

  • triển khai máy chủ dễ dàng hơn
  • dễ dàng hơn để theo dõi những thay đổi cục bộ
  • làm cho việc theo dõi lỗi dễ dàng hơn vì trong hầu hết các trường hợp, chúng ta có thể gắn thẻ phiên bản phần mềm vào lỗi, cho dù đó là lỗi chức năng hay cấu hình.

Một lựa chọn khác là quản lý cấu hình thông qua Ansible, với bố cục được đề xuất như trong hướng dẫn sử dụng mà chúng tôi hiện đang sử dụng. Chúng tôi cài đặt các gói phần mềm được phiên bản (gần như tất cả các dịch vụ web), sẽ chịu trách nhiệm cho cấu hình dành riêng cho gói của nó và để lại cấu hình cho toàn hệ thống. Cập nhật phần mềm máy chủ chỉ đơn giản là vấn đề va chạm số phiên bản và chạy lại các tập lệnh. Chúng tôi phụ thuộc rất nhiều vào chức năng "var_prompts" của Ansible để đảm bảo chúng tôi tách biệt thông tin nhạy cảm khỏi cấu hình.

Trong trường hợp "quản lý cấu hình thông qua các gói phiên bản":

Để triển khai, chúng tôi chỉ cần đưa lên một máy chủ tối thiểu (proxy, v.v.) và sử dụng trình quản lý gói (apt trong trường hợp của chúng tôi) để cài đặt một gói ô duy nhất, sẽ cài đặt tất cả các gói phụ thuộc. Thực hiện thay đổi đối với bất kỳ gói phụ thuộc nào chỉ đơn giản là nâng cấp phiên bản gói hàng đầu nhất, giúp cập nhật các triển khai hiện có dễ dàng hơn.

Đối với cấu hình, mỗi gói phần mềm sẽ có gói "cấu hình" đi kèm, để chỉ cho phép thay đổi cấu hình. Mỗi gói sẽ có các tệp cấu hình độc lập để ngăn xung đột giữa các gói khi chúng tôi xác minh các thay đổi cục bộ trên máy chủ. Thay vì chạy các lệnh tạo cấu hình, chúng tôi sẽ đảm bảo rằng chúng tôi sẽ có các tệp được tạo như một phần của gói, nhưng vẫn cho phép chạy các lệnh thông qua các tập lệnh cài đặt trước / sau. AFAIK, không có nhiều trường hợp chúng tôi có các gói sẽ dựa trên cùng một tệp cấu hình, nhưng nếu đó là trường hợp (đó là trường hợp cho cấu hình hệ thống), chúng tôi sẽ có một gói khác có một gói phụ thuộc vào cả hai. Tôi có thể thấy trường hợp đặc biệt này vượt khỏi tầm kiểm soát, nhưng điều này có thể được kiểm soát bằng cách luôn đảm bảo các tệp cấu hình độc lập. Cuối cùng, mỗi máy chủ sẽ có gói cấu hình riêng. Rõ ràng, tất cả các tệp này sẽ nằm dưới sự kiểm soát nguồn và chúng tôi có thể tạo ra hệ thống tạo khuôn mẫu đơn giản của riêng mình, để chúng tôi cũng có thể có sự linh hoạt của các vai trò Ansible.

Tôi tò mò tại sao tôi không thể tìm thấy bất kỳ thông tin / phân tích nào về loại quy trình công việc này để định cấu hình và triển khai máy chủ. Tôi có thiếu một cái gì đó về cơ bản thiếu sót với cách tiếp cận như vậy, so với các công cụ quản lý cấu hình hiện có?


Bạn đã không xem xét việc lưu trữ kho lưu trữ của riêng bạn trong nội bộ?
Eyoung100

Tôi nghĩ rằng đó là vì quản lý máy chủ là một vấn đề phức tạp và mọi người có xu hướng chọn một công cụ chuyên dụng và sử dụng nó (chẳng hạn như con rối hoặc vô hình), thay vì trộn lẫn các phương pháp tiếp cận. Tôi, tuy nhiên, làm mọi thứ trộn lên . Các gói cấu hình của tôi thiết lập mọi thứ cho một số cài đặt cốt lõi và sau đó để phần còn lại cho con rối.
muru

@chuckus: Tôi có cùng ý tưởng với các máy riêng của mình và thực hiện quản lý cấu hình tối giản trên đầu trình quản lý gói: holocm.org (xem github.com/majewsky/system-configuration để biết ví dụ hoàn chỉnh)
Stefan Majewsky

Câu trả lời:


2

Trình quản lý gói không thực sự hiệu quả để quản lý cấu hình vì một số lý do:

  1. Hầu hết các gói chứa cấu hình khi được cài đặt, vì vậy bạn phải tạo các gói tùy chỉnh đã loại bỏ chúng.
  2. Các trình quản lý gói hoạt động theo giả định rằng gói cài đặt một cấu hình cơ bản có thể thay đổi trong hệ thống. Vì vậy, nếu một gói được cài đặt lại / nâng cấp, nó thường nhắc người dùng phải làm gì với tệp đã sửa đổi (đây không phải là hành vi lý tưởng cho trình quản lý cấu hình).
  3. Trình quản lý gói thường không kiểm tra hệ thống theo nội dung gói thường xuyên và mặc dù một số có tùy chọn đó, nhưng nó không hiệu quả vì đây không phải là một tính năng thường được sử dụng.
  4. Vòng đời gói phức tạp hơn và dài hơn hầu hết các công cụ cấu hình tự động, do đó, việc duy trì thiết lập như vậy sẽ tốn nhiều công sức hơn.
  5. Người quản lý gói không quan tâm đến thứ tự cài đặt, vì vậy nếu bạn gặp trường hợp phụ thuộc gói a->b->cvà bạn đã cài đặt gói c và bạn cài đặt gói a, gói c sẽ không được cài đặt lại và gói a và / hoặc b có thể ghi đè lên cấu hình của c.

Nếu bạn khăng khăng sử dụng trình quản lý gói để duy trì cấu hình, tôi khuyên bạn nên kiểm tra tùy chọn sử dụng hệ thống quản lý cấu hình độc lập như con rối hoặc đầu bếp ở chế độ độc lập với gói cho cấu hình của chúng, theo cách này bạn sẽ có tất cả về cấu hình của bạn trong một gói phiên bản duy nhất nhưng theo cách không yêu cầu trình quản lý gói quản lý các cấu hình trên đĩa, điều này có thể dẫn đến các sự cố như tôi đã liệt kê và có thể một số vấn đề khác.

Để làm rõ, nên có thể làm những gì bạn đã lên kế hoạch, chỉ cần trình quản lý gói không phải là công cụ lý tưởng cho việc này.

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.