Trang web của tổ chức của tôi là ứng dụng Django chạy trên máy chủ web kết thúc + một số máy chủ xử lý nền trong AWS.Triển khai liên tục & tự động tính toán AWS bằng Ansible (+ Docker?)
Chúng tôi hiện đang sử dụng Ansible cho cả hai:
- cấu hình hệ thống (từ một hình ảnh hệ điều hành trần)
- thường xuyên bằng tay-kích hoạt triển khai mã.
Cùng một Playbook Ansible có thể cung cấp một máy ảo Dev Vagrant cục bộ hoặc một bản sao EC2 sản xuất từ đầu.
Bây giờ chúng tôi muốn triển khai tính năng tự động tính tỷ lệ trong EC2 và điều đó đòi hỏi một số thay đổi đối với triết lý "treat servers as cattle, not pets".
Điều kiện tiên quyết đầu tiên là chuyển từ khoảng không quảng cáo Ansible được quản lý tĩnh sang một API dựa trên EC2 động, được thực hiện.
Câu hỏi lớn tiếp theo là làm thế nào để triển khai trong thế giới mới này, nơi các trường hợp ném ra & ở giữa đêm. Các tùy chọn tôi có thể nghĩ đến là:
- Nướng mới đầy đủ triển khai AMI cho từng triển khai, tạo ra một mới AS Launch cấu hình và cập nhật các nhóm AS với điều đó. Âm thanh rất, rất cồng kềnh, nhưng cũng rất đáng tin cậy vì cách tiếp cận đá phiến sạch sẽ, và sẽ đảm bảo rằng bất kỳ thay đổi hệ thống mã yêu cầu sẽ ở đây. Ngoài ra, không cần các bước bổ sung khi khởi động, ví dụ: & chạy nhanh hơn.
- Sử dụng cơ sở AMI không thay đổi thường xuyên, tự động nhận mã ứng dụng mới nhất từ git khi khởi động, khởi động máy chủ web. Một khi nó lên chỉ cần triển khai thủ công khi cần thiết, như trước đây. Nhưng điều gì sẽ xảy ra nếu mã mới phụ thuộc vào sự thay đổi trong cấu hình hệ thống (gói mới, quyền, vv)? Có vẻ như bạn phải bắt đầu chăm sóc các phụ thuộc giữa các phiên bản mã và các phiên bản hệ thống/AMI, trong khi cách tiếp cận "chỉ thực hiện một cách an toàn đầy đủ" được tích hợp và đáng tin cậy hơn. Có nhiều hơn là chỉ là một nhức đầu tiềm năng trong thực tế?
- Sử dụng Docker? Tôi có một linh cảm mạnh mẽ, nó có thể hữu ích, nhưng tôi không chắc chắn làm thế nào nó sẽ phù hợp với hình ảnh của chúng tôi. Chúng tôi là một ứng dụng Django front-end tương đối khép kín chỉ với RabbitMQ + memcache là dịch vụ, mà chúng tôi sẽ không bao giờ chạy trên cùng một máy chủ. Vì vậy, những lợi ích có trong việc xây dựng một hình ảnh Docker bằng cách sử dụng Ansible có chứa các gói hệ thống + mã mới nhất, thay vì có Ansible chỉ làm điều đó trực tiếp trên một cá thể EC2?
Bạn làm như thế nào? Bất kỳ thông tin chi tiết/thực tiễn tốt nhất nào? Cảm ơn!