2015-07-31 34 views
5

Tôi đang lên kế hoạch xây dựng môi trường thử nghiệm bằng cách sử dụng ansible, jenkins và docker together.The kế hoạch là như thế này.Sử dụng Ansible, Jenkins và docker để xây dựng môi trường thử nghiệm nhanh

Tạo playbook không thể đọc cho mọi công cụ bạn đang sử dụng trong môi trường của bạn và lưu trữ chúng trên git. Sử dụng jenkins tạo công việc để tạo vùng chứa docker trên máy chủ dev và sử dụng playbook ansible để cung cấp các vùng chứa docker. Công việc Jenkins sẽ được tạo ra để người dùng có tùy chọn để chọn sách chơi mà họ muốn sử dụng với các thùng chứa và thùng chứa docker sẽ được xây dựng cho phù hợp.

toàn bộ khái niệm có thể được tóm tắt như minh họa bên dưới hình ảnh.

Devops

Những lợi ích tôi thấy là

tự động sao chép của các môi trường sản xuất chính xác.
Quy mô môi trường thử nghiệm của bạn theo yêu cầu.
Cung cấp các nền tảng khác nhau để thử nghiệm ứng dụng trên một máy chủ duy nhất.
Kiểm tra tích hợp nhanh hơn.
Thúc đẩy phương pháp nhanh nhẹn.
Tự do phát triển và tùy chỉnh môi trường thử nghiệm.
Nhà phát triển và người thử nghiệm có thể tạo môi trường ngay cả khi họ không biết bất kỳ điều gì liên quan đến OS, cấu hình.
Kiểm tra việc triển khai ứng dụng trong môi trường trong sạch, một bản dựng mới.

Có bất kỳ ai đã triển khai loại kiến ​​trúc môi trường như vậy, tôi muốn thảo luận về các lợi ích thực tế của tính tương tự.

+0

nó hoạt động như thế nào? Bạn đã thành công? Hãy chia sẻ kinh nghiệm của bạn. –

Trả lời

3

Tôi đang sử dụng một cách tiếp cận tương tự nhưng khác nhau:

  • Xác định Dockerfiles hoặc bếp/con rối/ansible/trích muối. Như trong cách tiếp cận của bạn.

  • Đưa những mô tả đó dưới sự kiểm soát phiên bản. Như trong cách tiếp cận của bạn.

  • Sử dụng Jenkins A đến CI- và xây dựng hình ảnh hàng đêm và tải chúng vào sổ đăng ký. Để quản lý các phiên bản khác nhau và giữ hình ảnh cũ. Điều này giới thiệu một đăng ký hình ảnh trong sơ đồ của bạn.

  • Mở rộng những hình ảnh đó bằng nô lệ Jenkins-Swarm. Điều này cho phép triển khai ad-hoc trong môi trường Jenkins của bạn.

Ở đây tôi tách biệt giữa việc xây dựng phần mềm và tòa nhà xây dựng bản thân nô lệ.

  • Tôi triển khai một Jenkins B để xây dựng phần mềm trên môi trường.

  • Bây giờ tôi chọn giữa vùng chứa mà tôi muốn triển khai vĩnh viễn và tạo vùng chứa mà tôi muốn triển khai theo yêu cầu.

    • Các thùng chứa vĩnh viễn, được sử dụng nhiều bởi công việc xây dựng, được bắt đầu như là nô lệ và trao đổi hàng ngày bằng cách xây dựng hàng đêm.
    • Vùng chứa đặc biệt được quản lý bởi Plugin Jenkins-Docker.
    • Để có cấu hình môi trường phức tạp hơn, tôi sử dụng docker-compose để quản lý tính khả dụng của tính năng đặc biệt.
    • Đối với các môi trường đặc biệt, cụ thể là các máy ảo để chạy các cấu hình đó, tôi sử dụng docker-swarm.

Diagram: enter image description here

+0

cảm ơn vì đã chia sẻ trường hợp người dùng của bạn Dường như nó đẹp và tôi cũng sẽ kiểm tra. – thinkingmonster

+0

Bạn có thể đặt một sơ đồ như @thinkmonster :) không? – Tuan

+0

Tôi hy vọng điều này làm cho nó rõ ràng hơn. – blacklabelops

0

Nếu bạn muốn kiểm tra với một hình ảnh Docker có phiên bản mới nhất hiện có của một gói nhất định trên một hệ điều hành nào đó, sau đó bạn cần phải thiết lập hình ảnh Docker hàng đêm giúp rebuild . Tôi có một dự án rất nhỏ, đơn giản có thể giúp bạn bắt đầu và chạy với các bản dựng lại hình ảnh docker hàng đêm tại https://github.com/zbeekman/nightly-docker-rebuild. Tôi sử dụng điều này để xây dựng lại GCC từ nguồn, nhưng bạn có thể dễ dàng sử dụng nó để cài đặt/nâng cấp gói từ trình quản lý gói hoặc xử lý bất kỳ phụ thuộc xây dựng/thời gian chạy nào khác có thể được cập nhật ngược dòng và có tác động tiềm năng đến dự án của bạn . Bằng cách này bạn có thể nắm bắt các vấn đề sớm, trước khi khách hàng/người dùng gặp phải chúng.

Các vấn đề liên quan