Mối quan hệ giữa Vagrant, Docker, Chef và OpenStack (hoặc các sản phẩm tương tự)?


56

Tôi là một nhà phát triển web, nhưng tôi cũng quan tâm đến một vài nhiệm vụ quản trị. Do đó, việc chuyển từ quản trị thuần túy sang dev-ops trở nên thuận tiện đối với tôi.

Dù sao, tôi có một số vấn đề để đặt một vài điều vào một mối quan hệ. Có lẽ không có gì, vì vậy tôi muốn nhờ giúp đỡ để làm rõ.

Về cơ bản, những gì tôi muốn đưa vào quan hệ là bốn loại phần mềm (theo hiểu biết của tôi). Các sản phẩm chính xác không thành vấn đề, bạn có thể đặt bất kỳ phần mềm tương tự nào thay thế:

  • Vagrant: Theo hiểu biết của tôi là tự động hóa việc tạo và quản lý VM: Thiết lập chúng, bắt đầu và dừng chúng. Điều này có thể được thực hiện bằng cách sử dụng VM cục bộ hoặc từ xa, ví dụ trên nền tảng đám mây.
  • Docker: Một "VM nhẹ", dựa trên một vài khái niệm nhân Linux, có thể được sử dụng để chạy các tiến trình một cách cô lập, ví dụ như trong môi trường lưu trữ web được chia sẻ.
  • Chef: Một công cụ để thiết lập và cấu hình một hệ điều hành, ví dụ như bên trong VM.
  • OpenStack: Một công cụ cho phép bạn xây dựng đám mây riêng của mình, do đó có thể so sánh với một cái gì đó như AWS.

Câu hỏi số 1: Những lời giải thích của tôi là đúng, hay tôi sai với một số (hoặc tất cả) những giả định này?

Câu hỏi số 2: Làm thế nào tôi có thể trộn tất cả các công cụ đó? Điều đó sẽ có ý nghĩa gì?

Trong trí tưởng tượng của tôi và từ quan điểm của tôi, bạn có thể đi và

  • sử dụng OpenStack để xây dựng đám mây của riêng bạn,
  • sử dụng Vagrant để quản lý các VM chạy trên đám mây,
  • sử dụng Chef để thiết lập các VM này
  • và cuối cùng sử dụng Docker để chạy các tiến trình bên trong VM.

Điều này có đúng không? Và nếu vậy, bạn có thể cho tôi một lời khuyên về cách bắt đầu sử dụng tất cả những thứ này không (nó khá nhiều cùng một lúc và tôi chưa biết bắt đầu từ đâu)?


1
Không đủ kỹ năng để trả lời hoàn toàn, nhưng đánh giá của bạn về Vagrant và Chef dường như là chính xác. Trên hộp phát triển của mình, tôi quay các máy ảo bằng Vagrant và sau đó cung cấp chúng với Chef và nó hoạt động rất tốt.
GSP

Câu trả lời:


54

Hãy sử dụng các trang web tương ứng của họ để tìm hiểu tất cả những dự án này là gì. Tôi sẽ thay đổi thứ tự mà bạn đã liệt kê, mặc dù:

  • Chef : Chef là một nền tảng tự động hóa biến cơ sở hạ tầng thành mã.

    Đây là một phần mềm quản lý cấu hình . Hầu hết trong số họ sử dụng cùng một mô hình: họ cho phép bạn xác định trạng thái bạn muốn có một máy, liên quan đến các tệp cấu hình, phần mềm được cài đặt, người dùng, nhóm và nhiều loại tài nguyên khác. Hầu hết trong số họ cũng cung cấp chức năng để đẩy các thay đổi lên các máy cụ thể, một quá trình thường được gọi là phối hợp .

  • Vagrant : Tạo và cấu hình các môi trường phát triển nhẹ, có thể tái tạo và di động.

    Nó cung cấp một cách có thể tái tạo để tạo ra các máy ảo hóa hoàn toàn bằng cách sử dụng công nghệ VirtualBox hoặc VMWare của Oracle làm nhà cung cấp . Vagrant có thể phối hợp với một phần mềm quản lý cấu hình để tiếp tục quá trình cài đặt khi trình cài đặt của hệ điều hành kết thúc. Điều này được gọi là cung cấp .

  • Docker : Một dự án nguồn mở để đóng gói, vận chuyển và chạy bất kỳ ứng dụng nào dưới dạng một thùng chứa nhẹ

    Chức năng của phần mềm này có phần trùng lặp với Vagrant, trong đó nó cung cấp các phương tiện để xác định cài đặt hệ điều hành, nhưng khác biệt rất nhiều trong công nghệ được sử dụng cho mục đích này. Docker sử dụng các thùng chứa Linux , không phải là máy ảo, mà là các quy trình riêng biệt chạy trong các hệ thống tệp bị cô lập. Docker cũng có thể sử dụng một hệ thống quản lý cấu hình để cung cấp các container.

  • OpenStack : Phần mềm nguồn mở để xây dựng các đám mây riêng và công cộng.

    Mặc dù sự thật là OpenStack có thể được triển khai trên một máy duy nhất , nhưng việc triển khai như vậy hoàn toàn chỉ là bằng chứng về khái niệm, có lẽ không có nhiều chức năng do hạn chế về tài nguyên.

    Mục tiêu chính cho cài đặt OpenStack là môi trường đa nút kim loại trần, trong đó các thành phần khác nhau có thể được sử dụng trong phần cứng chuyên dụng để đạt được kết quả tốt hơn.

    Một chức năng chính của OpenStack là hỗ trợ cho nhiều công nghệ ảo hóa, từ ảo hóa hoàn toàn (VirtualBox, VMWare), đến ảo hóa (KVM / Qemu) và cả container (LXC) và thậm chí cả Chế độ người dùng Linux (UML) .

Tôi đã cố gắng trình bày những sản phẩm này như là một thành phần của một kiến ​​trúc cụ thể. Theo quan điểm của tôi, trước tiên có thể xác định nhu cầu của bạn liên quan đến môi trường bạn cần (Chef, Puppet, Ansible, ...), sau đó có thể triển khai nó theo cách có kiểm soát (Vagrant, Docker , ...) và cuối cùng mở rộng quy mô toàn cầu nếu cần.

Bao nhiêu của tất cả các chức năng này bạn cần được xác định trong phạm vi dự án của bạn.

Cũng lưu ý rằng tôi đã đơn giản hóa quá mức hầu hết tất cả các giải thích kỹ thuật. Vui lòng sử dụng các liên kết tham chiếu để biết thông tin chi tiết.


đầu bếpMúa rối công cụ giống nhau không? Ý tôi là chúng tương đương nhau? Nếu bạn muốn chạy cái này trên máy chủ Windows 10, bạn sẽ sử dụng công cụ nào?
ReynierPM

Con rối là một công cụ tương tự như Chef. Không chắc chắn về việc liệu có tốt hơn trên Windows không ..
Adeerlike 6/2/2016

3

Tôi nghĩ rằng xuất phát từ nền tảng của nhà phát triển sẽ khiến việc trở thành một 'tín đồ' thực sự khó khăn hơn, câu hỏi của bạn đã gần 3 tuổi nên thật thú vị khi nghe bạn tìm thấy hành trình như thế nào, tôi sẽ đưa ra câu trả lời từ quan điểm của quản trị viên hệ thống về các ứng dụng bạn đã đề cập ở trên và hy vọng nó sẽ làm sáng tỏ hoặc đưa ra một viễn cảnh phi kỹ thuật sẽ giải thích tại sao một người (quản trị viên hoặc nhà phát triển) sẽ bắt đầu xem xét chính xác những gì bạn đã hỏi, ví dụ như từ các nhà phát triển phối cảnh quan hệ giữa x, y, z là những công cụ nào lớn hơn tổng của các phần của chúng?

Tôi thực sự nghĩ rằng quản trị viên hệ thống chiếm ưu thế ở đây, hầu hết các ứng dụng bạn đề cập trong câu hỏi của bạn đều giải quyết được 'vấn đề' của quản trị viên và khi làm như vậy cung cấp một môi trường trung tâm dữ liệu trừu tượng hơn và điều này sẽ dễ lập trình hơn cho các nhà phát triển và mới ' chiến lược của người sùng đạo (đọc chiến lược / nhóm, người sùng đạo không phải là một người). Vậy mối quan hệ với các ứng dụng bạn đề cập là gì? Làm thế nào điều này cung cấp một cách tiếp cận toàn diện cho dịch vụ CNTT?

OpenStack: Một công cụ cho phép bạn xây dựng đám mây riêng của mình, do đó có thể so sánh với một cái gì đó như AWS

Đó là những gì nó có, nhưng nó làm gì? - hệ điều hành có tên chủ yếu là DOS - nó vận hành đĩa của bạn bằng cách trừu tượng hóa BIOS, OpenStack vận hành trung tâm dữ liệu của bạn và trừu tượng hóa cơ sở hạ tầng của bạn (IaaS - là Jargon cho hệ điều hành trung tâm dữ liệu). Bây giờ trung tâm dữ liệu của bạn có một API, một cú pháp lệnh và một giao diện, OpenStack có thể lái xe hypervisors, switch, router, tường lửa, mạng khu vực lưu trữ, cân bằng tải, host Docker vv .. OpenStack sử dụng phần cứng của bạn sản xuất 'cắm' hoặc các chức năng cụ thể có thể tồn tại duy nhất trong phần mềm như phần mềm định nghĩa một cái gì đóhoặc ảo hóa chức năng mạng. Trên OpenStack này và tất cả các đám mây khác, có thể điều phối cơ sở hạ tầng của riêng họ bằng cách đọc các tập lệnh bạn ném vào công cụ điều phối hoặc được kích hoạt dựa trên các quy tắc (tăng tỷ lệ, giảm quy mô, v.v.). Vì vậy, openstack là một lớp trừu tượng khổng lồ, ví dụ tôi không quan tâm tôi có công tắc gì, cung cấp cho tôi một mạng với lệnh này hoặc xây dựng cho tôi một tải phức tạp cân bằng, HA, có sẵn công khai, tự động mở rộng, đăng ký tên miền, lưu trữ gắn thingy - với kịch bản này, tôi tìm thấy trên internet.

Docker: Một "VM nhẹ", dựa trên một vài khái niệm nhân Linux, có thể được sử dụng để chạy các tiến trình một cách cô lập, ví dụ như trong môi trường lưu trữ web được chia sẻ.

Docker là một lớp trừu tượng khác và giống như đám mây là một công nghệ đột phá, nó thay đổi ngành công nghiệp vì nó giải quyết được nhiều "vấn đề" hoạt động như phụ thuộc phần mềm, nâng cấp, cách ly dữ liệu và tính di động tuyệt đối. Java trở nên phổ biến vì tính di động của mã nguồn mà các nhà phát triển không phải nghĩ tới, một JVM đang chạy có nghĩa là mã của họ sẽ chạy trên máy pha cà phê miễn là nó hỗ trợ java. Docker giải quyết một vấn đề tương tự, để chạy Ứng dụng của tôi, bạn cần một máy chủ docker, không phải, bạn cần phiên bản python, kernel này, bản phân phối linux này, v.v., ứng dụng vẫn có những phụ thuộc đó, nhưng máy chủ bên dưới không quan tâm và quản trị viên không quan tâm bạn làm gì trong một container bị cô lập ( đến một điểm). Docker đang thay đổi cả mô hình phát triển và vận hành, coi toàn bộ hệ điều hành và đó là các dịch vụ như một hệ nhị phân. chúng ta có thể lấy chúng từ kho lưu trữ , phiên bản chúng, sửa đổi chúng, chạy chúng với các tham số, v.v.

Chef: Một công cụ để thiết lập và cấu hình một hệ điều hành, ví dụ như bên trong VM.

Có, và không gây khó chịu như hai người đầu tiên, Chef, Puppet, ansible, salt, quản lý vận hành trung tâm hệ thống và rất nhiều ứng dụng khác trong không gian này cung cấp một cách để các nhà phát triển và quản trị viên triển khai mô hình, nâng cấp và các hành động khác (config thay đổi), dường như không có bất kỳ tiêu chuẩn nào trong việc xem xét những nỗ lực này giống như có đám mây . Nhưng chúng ta không đối phó với thứ gì đó dứt khoát như Cơ sở hạ tầng, vì vậy, việc tìm hiểu những thứ này sẽ khó hơn và không thể chuyển đổi được từ cái này sang cái khác.

Vagrant: Theo hiểu biết của tôi là tự động hóa việc tạo và quản lý VM: Thiết lập chúng, bắt đầu và dừng chúng. Điều này có thể được thực hiện bằng cách sử dụng VM cục bộ hoặc từ xa, ví dụ trên nền tảng đám mây.

Đây là một ứng dụng kỳ lạ trong danh sách các ứng dụng bạn đề cập, Vagrant là công cụ dành cho nhà phát triển và đồ chơi dành cho quản trị viên, bạn có thể nhanh chóng đứng lên trong môi trường phát triển với vagrant, ví dụ: Tôi muốn phát triển ứng dụng Android, lấy IDE từ mơ hồ, tôi nghĩ rằng nó sẽ bị Docker vượt qua sớm.

bạn có thể cho tôi một lời khuyên về cách bắt đầu sử dụng tất cả những thứ này không (nó khá nhiều cùng một lúc và tôi chưa biết bắt đầu từ đâu)?

Đây là lý do tại sao tôi nghĩ quản trị viên chiếm ưu thế, chúng tôi đã phải thực hiện hầu hết việc này một cách thủ công và biết điều gì có thể sai, biểu hiện rối, điện toán đám mây và điều phối docker sẽ dễ dàng hơn với chúng tôi, các nhà phát triển sẽ thấy họ có nhiều tiếp tuyến Lời khuyên cho bất kỳ tín đồ tiềm năng nào là trước tiên hãy là quản trị viên.


0

Tôi vừa hoàn thành một dự án triển khai OpenStack sử dụng máy chủ Chef bên trong phiên bản Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Vấn đề chính khi thực hiện theo cách này là lấy đối tượng Vagrant cùng một IP mỗi lần bạn muốn quản lý các nút. Nếu bạn làm địa chỉ tĩnh, nó hoạt động tốt. Làm điều đó thông qua VPN là ít hơn lý tưởng.


0

Cuối cùng, tôi chỉ sử dụng kết hợp Vagrant và Docker.

Tôi sử dụng vagrant để cung cấp cho các máy (có thêm nhà cung cấp đám mây nhưng tôi đang sử dụng VirtualBox tích hợp. Vì tôi đang sử dụng phương pháp này nên mạng và lưu trữ bên ngoài khá nhiều thủ công, nhưng nếu bạn sử dụng một cái gì đó như plugin vagrant-aws, bạn có thể nói với AWS để cung cấp các phần cần thiết cho bạn.

Tập lệnh cung cấp tôi sử dụng điểm đến một vị trí an toàn có chứa chứng chỉ CA và các khóa được sử dụng để ký CSR cùng với docker swarm joinmã thông báo. Ngoài ra, tôi cài đặt docker-engine và cấu hình nó để tham gia vào bầy đàn (khởi tạo nếu không có).

Khi đã ổn định, tôi chỉ cần thực hiện một thao tác docker stack deploytừ máy cục bộ hoặc hộp xây dựng để triển khai ngăn xếp với mọi thứ tôi cần.

Trong trường hợp của tôi, tôi đã bỏ đầu bếp để ủng hộ việc chỉ sử dụng các tập lệnh cài đặt bài đăng đơn giản làm yumhoặc apt-gettrên các tập lệnh cung cấp của tôi.

Tôi cũng sử dụng plugin kích hoạt vagrant để thêm tập lệnh trước khi hủy (trong trường hợp của tôi để rời khỏi bầy đàn).

Phần hay của việc tập trung với Vagrant là bạn có thể sao chép môi trường trên một hệ thống khác hoặc một máy tính để phát triển chỉ cần thêm hoặc thay đổi providerphần. Xin lưu ý rằng tôi chưa từng thiết lập OpenStack trên một máy tính để quản lý VirtualBox.

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.