Điểm:0

Hình ảnh Linux bất biến - tôi có thể và nên đi bao xa?

lá cờ vu

Tính không thay đổi là điều tuyệt vời để nhận ra tính nhất quán, khả năng dự đoán và độ tin cậy và tôi không thấy có lý do gì để mình không cố gắng đạt được tính không thay đổi ở cấp hệ điều hành khi triển khai ứng dụng của mình trên VPS Linux từ các nhà cung cấp đám mây khác nhau trên khắp thế giới. thế giới. Với các công cụ như Packer để giúp tạo hình ảnh hệ điều hành, đây dường như cũng là cách nên làm.

Đối với một số nhà cung cấp đám mây (ví dụ: Digital Ocean), tôi có thể tạo hình ảnh cục bộ ở định dạng qcow2 hoặc raw, sau đó tải hình ảnh hoàn chỉnh lên nhà cung cấp đám mây để triển khai khi khởi tạo VPSâes mới.Đây có vẻ là lựa chọn tốt nhất.

Nhưng các nhà cung cấp đám mây khác (ví dụ: Hetzner ở Đức) không hỗ trợ nhập hình ảnh hệ điều hành của riêng bạn - thay vào đó bạn phải tạo hình ảnh trên cơ sở hạ tầng của họ dựa trên một trong các hình ảnh nguồn của họ, sau đó bạn có thể chụp nhanh bản cài đặt cuối cùng thành một bản có thể sử dụng lại hình ảnh, khi mọi thứ được cấu hình chính xác. Trên thực tế, đây cũng là công việc của Hetzner Cloud Builder từ Packer.

Nhưng làm thế nào để đảm bảo rằng hình ảnh cuối cùng của Hetzner có chính xác cùng một cài đặt CentOS 8 (xuống cùng một bộ gói RPM đã cài đặt chính xác với cùng số phiên bản chính xác) như đang chạy trên tất cả các nhà cung cấp dịch vụ đám mây khác?

Tôi tưởng tượng rằng giải pháp có thể là một loại công cụ khai báo nào đó, lấy danh sách các gói RPM và số phiên bản liên quan, đồng thời đưa hệ thống đích phù hợp với danh sách này - đảm bảo rằng mọi gói RPM bị thiếu đều được cài đặt đúng phiên bản, loại bỏ phần thừa gói RPM, nâng cấp các gói RPM cũ hơn và hạ cấp các gói RPM mới hơn để đảm bảo rằng phiên bản yêu cầu đã được cài đặt.

Có một công cụ như vậy tồn tại hay tôi nên nghĩ hoàn toàn khác về điều này?

Một số người có thể lập luận rằng các gói CentOS RPM phải luôn được nâng cấp lên phiên bản mới nhất hiện có, nhưng sau đó tôi không thể đảm bảo rằng tất cả các nhà cung cấp đám mây đang chạy cùng một bản cài đặt hệ điều hành - điều này có thể ảnh hưởng đến khả năng dự đoán và độ tin cậy của dịch vụ của tôi.

Thay vào đó, tôi muốn có thể kiểm tra kỹ lưỡng thiết lập hoàn chỉnh (ứng dụng OS +) trước khi triển khai nó cho bất kỳ nhà cung cấp đám mây nào và sau đó việc triển khai sẽ giống nhau trên tất cả các nhà cung cấp đám mây. Đây là cách chúng tôi thực hiện mọi việc ở cấp ứng dụng bằng cách sử dụng hình ảnh Docker và tôi không thể hiểu tại sao chúng tôi nên chấp nhận ít hơn ở cấp hệ điều hành.

Bất kỳ thông tin đầu vào nào từ các đồng nghiệp DevSecOps của bạn về cách đạt được những mục tiêu này?

Điểm:0
lá cờ cn

Cả cập nhật dựa trên hình ảnh và máy chủ không thay đổi đều không bắt buộc phải đặt một số kiểm soát đối với phần mềm nào được cài đặt. Các lựa chọn tồn tại giữa các thái cực của
tự động cập nhật gói từ gương công khai và hình ảnh bất biến.

Với một bản phân phối sử dụng các gói riêng lẻ, chẳng hạn như CentOS sử dụng vòng/phút, có thể duy trì kho lưu trữ cập nhật của riêng bạn. Giới hạn chỉ các gói bạn sử dụng. Tải các bản cập nhật vào kho lưu trữ thử nghiệm thường xuyên, chẳng hạn như 4 tuần một lần. Kiểm tra bộ gói bị đóng băng này trong một thời gian, sau đó chuyển sang kho lưu trữ ổn định của bạn. Định cấu hình tất cả các máy chủ để tự động cập nhật từ máy nhân bản của bạn, có lẽ theo lịch trình. Khi quá trình tự động hóa cài đặt một gói như một phần của quá trình triển khai một thứ, phiên bản của nó sẽ được biết vì nó đến từ máy nhân bản của bạn. Tuy nhiên, các máy chủ riêng lẻ có thể gặp sự cố khi áp dụng giao dịch gói và bị lỗi thời.Cân nhắc truy vấn mọi máy chủ lưu trữ trong nhóm để biết phiên bản của các gói đặc biệt quan trọng, có thể là một số bản cập nhật bảo mật nhất định.

Đủ dễ dàng để sao chép cài đặt hệ điều hành như một phiên bản khác. Tuy nhiên, hình ảnh của các bản phân phối dựa trên gói không thực sự bất biến, trình quản lý gói vẫn khả dụng trong trường hợp này và người dùng đặc quyền vẫn có thể thay đổi mọi thứ trong cây /usr.

Hãy xem xét một bản phân phối được xây dựng xung quanh việc cập nhật dựa trên hình ảnh, như CoreOS. Các bản cập nhật phải được xếp lớp vào hình ảnh và được khởi động lại để có hiệu lực. Tùy chỉnh được giới hạn ở một lượng nhỏ siêu dữ liệu. CoreOS nói riêng chỉ dành cho lưu trữ vùng chứa, nhưng đây có thể là trường hợp sử dụng của bạn. Có lợi thế là có thể sao chép, Fedora CoreOS 34.20210904.3.0 là một bộ phần mềm được xác định rõ ràng.


Bạn có thể xử lý các máy chủ tính toán không cung cấp cách tải lên hình ảnh. Khởi động môi trường cứu hộ với quyền truy cập mạng và tải hình ảnh trực tiếp vào đĩa. Chụp cái đó để làm mẫu.


Bây giờ có thể là thời điểm tốt để đánh giá lựa chọn bản phân phối của bạn vì những lý do khác. CentOS Linux 8 kết thúc vào tháng 12 năm 2021. CentOS Stream là sự thay thế, tuy nhiên, nó là phiên bản ngược dòng thay vì hạ lưu từ RHEL.

Điểm:0
lá cờ bd

Nhưng làm cách nào để tôi đảm bảo rằng hình ảnh Hetzner cuối cùng có cài đặt CentOS 8 giống hệt nhau (cho đến cùng một bộ gói RPM đã cài đặt chính xác với cùng số phiên bản) như đang chạy trên tất cả các nhà cung cấp đám mây khác?

Nếu tôi hiểu chính xác những gì bạn muốn, tôi sẽ truy cập bất kỳ công cụ 'kiểm tra cơ sở hạ tầng' nào như kiểm tra cho phép bạn mô tả những gì bạn muốn có trong hình ảnh/VM mục tiêu của mình.

Chúng tôi sử dụng nó để xác nhận của chúng tôi đống muối/dự án muối mã sử dụng nó kết hợp với Phòng bếp theo cách này (chúng tôi chạy nó trong một công việc trên công cụ CI của chúng tôi)

  • tạo ra N máy ảo với Nhà bếp (có thể được sử dụng với Docker, Vagrant cũng như các nhà cung cấp dịch vụ đám mây)
  • sự cung cấp mỗi máy với hồ sơ của nó, với Salt, Ansible, Chef, Puppet hoặc bất cứ thứ gì
  • thẩm tra trạng thái máy kết quả với Inspec

Inspec cho phép bạn tạo các loại 'bài kiểm tra đơn vị' nhưng đối với cơ sở hạ tầng/hệ thống: bạn có thể dễ dàng xác minh người dùng và nhóm có hay không có mặt, gói được cài đặt và phiên bản của chúng, dịch vụ đang chạy, cổng TCP/UDP, quy tắc tường lửa...

(Tôi cũng sử dụng Packer để tạo hình ảnh nhưng hiện tại tôi không sử dụng Inspec trong ngữ cảnh này: chúng tôi cho rằng mã được sử dụng để tạo hình ảnh này đã được kiểm tra bởi công việc CI trước đó)

Vì vậy, hãy giải quyết vấn đề của bạn: Tôi sẽ thêm vào bước thiết lập Trình đóng gói của bạn một bước xác minh Inspec. Ngoài ra, có vẻ như nó đã được tích hợp trong Packer với tư cách là nhà cung cấp https://www.packer.io/docs/provisioners/inspec (mà tôi vừa phát hiện ra)

Điểm:0
lá cờ np

Trên thực tế, khi bạn đã tạo VM trong Hetzner, bạn có thể khởi động nó vào một LiveCD tùy chọn, có những thứ như CloneZilla hoặc SystemRescue mà bạn có thể sử dụng để kết xuất/khôi phục hình ảnh của mình.

Tôi thực sự thấy rằng hình ảnh CloneZilla dễ di chuyển hơn giữa các nhà cung cấp VPS đám mây khác nhau.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.