2015-07-01 15 views
35

Gần đây tôi đang xem Ansible và muốn sử dụng nó trong các dự án. Và cũng có một công cụ khác Rundeck có thể được sử dụng để làm tất cả các loại hoạt động. Tôi có kinh nghiệm với cả công cụ và điều này là sự hiểu biết hiện tại của tôi về họ:Một ý tưởng hay là làm cho Ansible và Rundeck hoạt động cùng nhau, hoặc sử dụng một trong hai là đủ?

điểm tương tự

  • Cả hai công cụ là đại lý-ít hơn và sử dụng SSH để thực hiện các lệnh trên các máy chủ từ xa

  • khái niệm chính Rundeck là Node, giống như hàng tồn kho Ansible của, ý tưởng quan trọng là phải xác định/quản lý/nhóm các máy chủ mục tiêu

  • Rundeck có thể thực hiện ad-hoc lệnh trên được lựa chọn nút, Ansible cũng có thể làm điều này rất thuận tiện. Rundeck có thể được tích hợp với công cụ CI như Jenkins để thực hiện công việc triển khai, chúng ta cũng có thể định nghĩa một công việc Jenkins để chạy. ansible-playbook để làm công việc triển khai

điểm khác nhau

  • Rundeck có khái niệm về công việc, mà Ansible không

  • Rundeck có Job Scheduler, mà Ansible chỉ có thể đạt được điều này với các công cụ khác như Jenkins hoặc Cron nhiệm vụ

  • Rundeck có giao diện người dùng Web theo mặc định cho miễn phí, nhưng bạn phải trả tiền cho Ansible Tháp

có vẻ cả Ansible và Rundeck có thể được sử dụng để làm công việc cấu hình/quản lý/triển khai, có thể theo một cách khác. Vì vậy, câu hỏi của tôi là:

  • Hai công cụ bổ sung này có được thiết kế cho các mục đích khác nhau không? Nếu họ là công cụ bổ sung, tại sao Ansibl chỉ so sánh với các công cụ như Chef/Puppet/Slat nhưng không phải với Rundeck? Nếu họ không lý do tại sao họ có rất nhiều chức năng tương tự?
  • Chúng tôi đã sử dụng Jenkins cho CI, để xây dựng một đường ống dẫn liên tục-Delivery, công cụ nào (Ansible/Rundeck) là một ý tưởng tốt hơn để sử dụng để làm việc triển khai?
  • Nếu họ có thể được sử dụng cùng nhau, việc thực hành tốt nhất là gì?

Mọi đề xuất và chia sẻ kinh nghiệm đều được đánh giá cao.

+0

có lẽ đó là một sự giúp đỡ [link] (https://groups.google.com/forum/#!topic/rundeck-discuss/8rJWEmjhwnM) – ThoFin

+0

này thực sự là một câu hỏi dựa trên ý kiến, do đó, nó không có khả năng thêm giá trị đáng kể từ quan điểm đó. – ingyhere

Trả lời

32

TL; DR - cho môi trường Jenkins của bạn cho CI/CD tôi khuyên bạn nên sử dụng chỉ Ansible.

Bạn đã phát hiện thấy có sự giao nhau khá lớn giữa Ansible & Rundeck, vì vậy tốt nhất nên tập trung vào nơi mỗi sản phẩm tập trung, đó là phong cách và sử dụng.

Focus

Tôi tin Rundeck của trọng tâm là trong việc giúp quản trị hệ thống để xây dựng một cổng thông tin tự phục vụ (web-based) mà có thể truy cập đến cả quản trị hệ thống khác và, có khả năng, ít "kỹ thuật" người/sysadmin. Trang web của Rundeck nói "Biến quy trình hoạt động của bạn thành công việc tự phục vụ. Hãy cung cấp cho người khác khả năng kiểm soát và khả năng hiển thị mà họ cần.". Rundeck cũng cảm thấy như nó có một cái nhìn 'tập trung hơn' trên thế giới: bạn tải các công việc vào một cơ sở dữ liệu và đó là nơi họ sống.

Với tôi, Ansible là dành cho nhà thiết kế - vì vậy hãy xây dựng và tự động triển khai các ứng dụng (tự xây dựng) theo cách sao cho chúng có thể lặp lại nhiều lần. Tôi cho rằng Ansible tập trung nhiều hơn cho các nhà phát triển phần mềm xây dựng các sản phẩm của riêng mình: Ansible 'playbooks' là các tập tin văn bản, vì vậy thường được lưu trữ trong điều khiển nguồn và thông thường cùng với ứng dụng mà các playbook sẽ triển khai.

tập trung

Với Rundeck Tạo việc làm bạn thường giải quyết việc làm thông qua giao diện web.

Với Ansible bạn tạo các tác vụ/playbook trong tệp qua trình chỉnh sửa văn bản.

Operation/Task/nghề Phong cách

Rundeck theo mặc định là bắt buộc - bạn viết kịch bản được thực thi (thông qua SSH).

Ansible là cả hai mệnh lệnh (nghĩa là thực thi các lệnh bash) nhưng cũng khai báo, vì vậy trong một số trường hợp, hãy bắt đầu Apache, bạn có thể sử dụng tác vụ service để đảm bảo rằng nó đang chạy. Điều này là gần gũi hơn với các công cụ quản lý cấu hình khác như Puppet và Chef.

công việc phức tạp/script

Rundeck có khả năng chạy một công việc khác bằng cách định nghĩa một bước trong quy trình làm việc của công việc nhưng từ kinh nghiệm này cảm thấy như một tacked-on bổ sung so với một tính năng nghiêm trọng cấp cao nhất.

Ansible được thiết kế để tạo các hoạt động phức tạp; chạy/bao gồm/etc là các tính năng cấp cao nhất.

Làm thế nào nó chạy

Rundeck là một ứng dụng máy chủ. Nếu bạn muốn chạy các công việc từ nơi khác (như CI), bạn sẽ cần phải gọi ra cli hoặc thực hiện cuộc gọi API.

Thẳng Ansible là dòng lệnh.

điều kiện

Do cross-over và tính linh hoạt chung của Rundeck Ansible bạn có thể đạt được tất cả những điều trên trong mỗi. Bạn có thể kiểm soát phiên bản của các công việc Rundeck của bạn bằng cách xuất chúng sang YAML hoặc XML và kiểm tra chúng thành điều khiển nguồn. Bạn có thể nhận giao diện người dùng web trong Ansible bằng Tower. v.v. v.v.

Câu hỏi của bạn:

Công cụ bổ sung?

Tôi có thể hình dung một cửa hàng SaaS sử dụng cả hai: người dùng có thể sử dụng Ansible để thực hiện tất cả các hành động triển khai và sau đó sử dụng Rundeck để thực hiện công việc một lần, adhoc.

Tuy nhiên, trong khi tôi có thể hình dung nó, tôi sẽ không khuyên bạn nên làm điểm xuất phát. Tôi, tôi bắt đầu chỉ với Ansible và xem tôi đi được bao xa. Tôi chỉ có lớp trong Rundeck sau này nếu tôi phát hiện ra rằng tôi thực sự, thực sự cần phải chạy một lần.

CI/CD

Ansible: môi trường của bạn nghe có vẻ giống như một ngôi nhà phần mềm mà bạn đang triển khai ứng dụng của riêng bạn. Nó có lẽ nên được lặp lại (đặc biệt là khi bạn đang đi giao hàng liên tục), do đó bạn sẽ muốn kịch bản triển khai của bạn trong kiểm soát nguồn. Bạn sẽ muốn đơn giản và Ansible là "chỉ các tập tin văn bản". Tôi hy vọng bạn cũng sẽ muốn các dev của bạn có thể chạy mọi thứ trên máy của họ (phải không?), Ansible được phân cấp.

Được sử dụng với nhau (cho CI/CD)

Calling Rundeck từ Ansible, không có. Chắc chắn, nó sẽ là có thể nhưng tôi đang đấu tranh để đến với lý do tốt. Ít nhất, không phải là lý do cụ thể cho từng ứng dụng cụ thể.

Gọi Ansible từ Rundeck, có. Tôi có thể hình dung ai đó đầu tiên xây dựng một số lệnh adhoc lặp lại trong Ansible. Sau đó, tôi có thể thấy có một nhu cầu nhỏ để có thể gọi điều này mà không có một dòng lệnh (nói: người dùng không có kỹ thuật). Nhưng, một lần nữa, điều này là nhận được cụ thể cho môi trường của bạn.

+0

Cảm ơn @otupman vì câu trả lời của bạn, bây giờ chúng tôi quyết định chỉ sử dụng Ansible trong công ty của chúng tôi, như bạn đã nói Ansible với Jenkins là một sự kết hợp tốt. Có lẽ chúng tôi cũng sẽ thử Rundeck trong tương lai khi chúng tôi thực sự cần nhưng không phải bây giờ :-) – shizhz

+1

Đây là một số lý do tuyệt vời để chạy Ansible từ Rundeck: (1) Log history of deployments - Bạn có thể quay lại và xem lại nhật ký khi xảy ra sự cố hoặc chỉ xem những gì đã được triển khai thực sự. (2) Các nhà phát triển, người quản lý và các bên liên quan khác có thể sở hữu các triển khai trên tầng ứng dụng của riêng họ. (3) Dễ sử dụng. (4) Nó thực sự chạy trên một hộp Windows mà Ansible không thể. – ingyhere

+0

# 2 rất lớn! Cho những người không muốn sử dụng CLI sức mạnh để sở hữu những triển khai này là cực kỳ có lợi. Nó cho phép bạn trao trách nhiệm này cho QA/người quản lý xây dựng khi bạn đã nhận được thứ được may đẹp, tại sao chúng ta phải bấm vào nút nếu chúng ta biết rằng nó hoạt động? –

3

Người ta chỉ dựa trên yêu cầu của bạn. Tôi sử dụng rundeck để thực thi tập lệnh từ xa và triển khai ứng dụng. Tôi đã tích hợp nó với Foreman để trang trải việc cung cấp và quản lý cấu hình.

Nếu bạn có ngân sách hạn chế lựa chọn nào tốt, đá Rundeck. Bạn có thể bỏ lỡ một số tính năng trong Ansible mặc dù. Nhóm Google cũng khá tích cực trong trường hợp hỗ trợ.

Nếu bạn có ngân sách đầu tư vào tòa tháp an toàn và bạn có thể không cần bất kỳ điều gì khác.

+0

Cảm ơn @Gautam Jose – shizhz

+0

Yêu cầu của bạn có hài lòng không? Bạn đã chọn cuối cùng? –

+0

Tôi thực sự muốn cung cấp cho Ansible một thử, ngay cả khi không có Ansible Tower cho bây giờ. Hiện tại tôi chỉ muốn sử dụng Jenkins để kích hoạt triển khai, đó là một bước trong toàn bộ đường dẫn CD. – shizhz

2

Các tiêu chuẩn máy chủ không thể phát hiện được.

Nhiệm vụ Adhoc/hoạt động chuyển sang trạng thái rundeck.

Đây là những gì tôi hiện đang sử dụng.

2
  1. Nếu bạn đang sử dụng chúng như là cổng thông tin dịch vụ tự cho các nhà phát triển hoặc OPS đội sau đó tôi sẽ nói rằng RBAC là đơn giản và trực quan rõ ràng hơn thực hiện trong tháp chứ không phải trong Rundeck. Hãy xem xét cần bao nhiêu nỗ lực và phức tạp để thiết lập RBAC vì nó có thể là yếu tố quyết định cho các nhóm hỗ trợ sản phẩm này.

  2. API REST trong Tháp đơn giản và dễ dàng hơn để phân tích cú pháp thay vì trong Rundeck.

  3. Trong Tháp, bạn có thể thấy các sự kiện riêng lẻ cho mỗi tác vụ của sách bài tập trong khi trong Rundeck, mọi thứ được đưa vào một đầu ra của bảng điều khiển.

  4. Khoảng không quảng cáo động trong Tháp khá hữu ích khi triển khai trong đám mây công cộng.

3

Quan điểm của tôi - rundeck và ansible (miễn phí, không có tháp) làm loại khác nhau của công việc

  1. Ansible (không có tháp) - quản lý cấu hình (máy chủ cung cấp/app, cập nhật cấu hình khối)

  2. Rundeck - Tập trung công việc lên lịch với kiểm soát truy cập, thông báo, sản lượng công việc vv (bản ghi lưu trữ cũ, chạy một số kịch bản, vv)

+0

Chào mừng bạn đến với Stack Overflow, Petr. Tôi khuyên bạn nên chỉnh sửa câu trả lời của mình để được tổ chức hơn và kỹ lưỡng hơn (thêm ví dụ, cải thiện định dạng của bạn, v.v.). Đó là một câu trả lời hay và việc thực hiện các chỉnh sửa này sẽ cải thiện nó và giúp danh tiếng của bạn ở đây. –

1

Vào thời điểm đó câu hỏi này được yêu cầu tác giả cho biết chính xác rằng Ansible chỉ cung cấp giao diện người dùng cho một khoản phí.

Giao diện hiện đã được mã nguồn mở: AWX

+0

Cảm ơn, đây là một tin tốt :-) – shizhz

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