Tôi đang cố gắng xây dựng một hệ thống sẽ chạy các bản dựng (CI và bản dựng thử nghiệm) ngắn hạn, các yêu cầu bắt buộc theo yêu cầu của tôi là mỗi phần mềm sống trên một máy chủ riêng. Tôi cũng lấy định nghĩa đó để bao gồm các tùy chọn paravirtualsation , vì có vẻ như nó sẽ giúp tôi đỡ đau đầu hơn.
Tôi đang làm việc trên máy Mac, vì vậy hầu hết mọi công nghệ đều không hoạt động, libvirt và quemu , v.v. sẽ không hoạt động với tôi. Tuy nhiên tôi đang lên kế hoạch triển khai lên Debian; do đó, mọi thứ chạy trên Debian đều quay trở lại trên bàn, miễn là tôi có thể tạo kịch bản cho việc cung cấp máy chủ cũng như các miền khách.
Thiết lập dự định của tôi là tôi có thể sử dụng để khởi động trình cài đặt Debian, điều đó có nghĩa là khi khởi động, máy sẽ tự động được cung cấp (Chef, Puppet, Babushka, đừng bận tâm) - và một phần của việc cung cấp đó sẽ tạo ra một rootfs mẫu có thể được sử dụng để khởi động một container. Bản thân container cũng cần được cung cấp, để khi container xuất hiện, nó biết công việc phải làm là gì và có thể thực hiện công việc, sau đó thoát ra.
Nói tóm lại, đây là quy trình công việc tôi cần:
- Khởi động máy (ảo hoặc cách khác) và sẵn sàng thực hiện công việc.
- Công việc nên được thực hiện bởi một kịch bản được cài đặt bởi đầu bếp / con rối / babushka / v.v.
- Khi công việc đến, một máy ảo nên được bắt đầu để thực hiện công việc.
- VM sẽ thực hiện công việc, thoát và giải phóng tài nguyên của nó cho máy chủ / máy chủ. (điều quan trọng là điều này đã mở rộng cho ít nhất hàng trăm máy ảo khách trên phần cứng hợp lý)
Tôi đã đến một điểm mà tôi đã thử những điều sau đây và từ bỏ chúng vì những lý do được nêu dưới đây:
Đối với máy chủ
- Hình ảnh Debian micro ISO trước hạt giống với Instalinux (được hỗ trợ LinuxCOE) ( Xấu: Hoàn toàn không hoạt động ("Không tìm thấy mô-đun hạt nhân" (vì hình ảnh Instalinux không đồng bộ với kho FTP, rõ ràng giải pháp này rất dễ vỡ, Nó cũng không cho phép nhiều phạm vi để cài đặt sau và thả các khóa SSH, khóa máy chủ, v.v. vào máy, có vẻ như là lửa và quên, cuối cùng tôi có một máy đang chạy, nhưng không có quyền truy cập vào nó .)
- Pre-seed Debian netinst ISO ( Xấu : các vấn đề tương tự, như trên, ngoại trừ ít nhất quá trình cài đặt thường hoàn thành do không có sự chênh lệch hạt nhân giữa kho ISO và kho lưu trữ FTP. Vẫn còn giới hạn cho cài đặt sau. Tốt : Hoàn toàn đáng tin cậy & có thể lặp lại, dễ dàng ném vào bất kỳ ngăn xếp công nghệ VM nào trên máy Mac hoặc trên máy kim loại trần, sẽ hoạt động ở mọi nơi, tuy nhiên tôi không thể cài đặt sau nó đủ )
- Nhiều phương pháp xây dựng rootfs và biên dịch nó thành hình ảnh đĩa cứng có thể khởi động ( Xấu : Tôi có thể làm việc nhỏ bé như thế nào, rất khó để cài đặt vào máy thật và là một quá trình xây dựng phức tạp. Tốt: Nếu Tôi có thể làm cho nó hoạt động, điều này dường như cung cấp hầu hết phạm vi để cấu hình trước máy theo một đặc điểm kỹ thuật nhất định với các khóa ssh, khóa máy chủ, tên máy chủ, phần mềm được cài đặt từ Git và bất cứ điều gì khác, nhưng sau đó câu hỏi sẽ là cách đóng gói nó để phân phối, hoặc làm thế nào để kịch bản nó giải trí. )
Tôi thực sự không chắc chắn mọi người sẽ sử dụng công nghệ nào để đưa VM từ không có gì vào một hệ thống đang hoạt động, hoạt động và hữu ích. Có vẻ như ba bước đối với tôi a) hệ điều hành, b) cấu hình hệ thống (người dùng, v.v.) và sau đó c) thay đổi hệ thống tập tin.
Đối với máy khách (ảo):
- Nhiều thứ, chủ yếu tôi nghĩ rằng câu trả lời ở đây là một rootfs chỉ được tạo
debootstrap
và một phân vùng đặc biệt trên container LXC chứa công việc cần thực hiện cho trường hợp cụ thể này (một bảng kê khai công việc). Chèn tất cả các cảnh báo thông thường về việc xây dựng HĐH, khởi động, tạo người dùng, kiểm tra phần mềm từ git và thực hiện công việc.
Tôi thực sự không chắc chắn những công cụ để tiếp cận, có vẻ như vấn đề cần được giải quyết tốt. Nhưng tôi không thể tìm ra nơi để thực sự bắt đầu.
Hầu hết mọi người dường như đề nghị với máy chủ rằng tôi nên chọn một công nghệ ảo hóa, khởi động máy về trạng thái làm việc và sau đó chụp lại nó (libvirt có vẻ hợp lý cho việc này). Sử dụng ảnh chụp nhanh để hiển thị mọi cài đặt tiếp theo để thử nghiệm hoặc trong sản xuất.
Đối với các máy khách, lxc dường như cung cấp tùy chọn dễ nhất, ngoại trừ việc tạo nền cho container và kết nối với nó sau đó trên bảng điều khiển bị hỏng trong tất cả các nhân hiện tại và phiên bản mới nhất của lxc có sẵn cho Debian ổn định đã hơn 18 tháng tuổi. và thiếu rất nhiều tính năng được sử dụng rộng rãi.
Điển hình tôi là nhà phát triển ứng dụng và tôi thường không làm việc với công nghệ cấp máy chủ (và tôi chắc chắn rằng SF sẽ gắn cờ câu hỏi này là "quá chủ quan") nhưng tôi thực sự không chắc chắn nên tiếp cận công cụ nào.
Lời cuối cùng là tôi biết về một dự án xếp chồng tương tự (travis-ci.org) đang sử dụng các hộp Vagrant cho việc này. Nó có vẻ như là một công cụ khá cùn, các công cụ định hướng ruby lớn, chậm, được thiết kế để cung cấp máy tính để bàn quy mô nhỏ cho các máy ảo thử nghiệm được sử dụng cho cơ sở hạ tầng dịch vụ quan trọng, nhưng tôi cũng biết một số kẻ đó và chúng thông minh hơn tôi, nên có lẽ họ đã bỏ cuộc.
Bất kỳ trợ giúp đánh giá cao.