Câu hỏi Tại sao mọi người sử dụng Puppet / Chef với Amazon Cloud Formation thay vì chỉ sử dụng CloudInit?


Chúng tôi đang có kế hoạch sử dụng các trường hợp AMI EC2 không được "nướng trước". I E. khi họ được tách ra, họ đang cài đặt trần của AWS linux. Quá trình khởi động của chúng tôi sẽ kéo theo các lượt cài đặt khác nhau mà chúng tôi cần, ví dụ: python, tomcat. Chúng ta sẽ có tối thiểu 3 trường hợp và tối đa là 8.

Với những yêu cầu này, việc sử dụng Puppet / Chef có hữu ích hơn là sử dụng Amazon Cloud Formation (CloudInit) không?

Tốt nhất tôi có thể thấy là nếu chúng ta sử dụng Puppet, thì chúng ta sẽ có lập trình khai báo dễ kiểm tra hơn để xem điều gì đang xảy ra so với kịch bản. Ngoài ra CloudInit có giới hạn kích thước tập lệnh 16k mà chúng tôi có thể hoặc không thể chạy vào.

Có ai đã chuyển từ CloudInit sang Puppet hoặc Chef vì một lý do cụ thể mà họ có thể cung cấp ở đây để trả lời câu hỏi của tôi không?


76
2017-08-16 20:55


gốc


Một số người (như tôi) sử dụng các tập lệnh dữ liệu người dùng đơn giản (được hỗ trợ bởi cloud-init) với CloudFormation. Các tập lệnh dài hơn có thể được tải xuống từ S3 và được chạy bởi tập lệnh dữ liệu người dùng ban đầu. - Eric Hammond
cloud-init là không thuyết phục và nhiều nhà cung cấp dịch vụ đám mây sử dụng nó. Nó có thể chạy trên AWS, nền tảng đám mây của Google và Azure của Microsoft. (cloud-init.io) Trong khi đó, AWS :: CloudFormation :: Init không phải là bất khả tri. Đó là amazon cụ thể. - Jordan Stewart


Các câu trả lời:


Có lợi thế hơn CloudInit không? Vâng, tuyệt đối, nhiều người trong số họ!

Chắc chắn, bạn có thể viết từ trên xuống dưới khi tập lệnh CloudInit cung cấp máy chủ. Nhưng điều gì sẽ xảy ra khi bạn cần thay đổi tệp cấu hình, thêm người dùng, cập nhật gói hoặc cài đặt gói mới? Bạn sẽ kết thúc đăng nhập vào máy chủ hoặc viết kịch bản để làm như vậy, và chắc chắn là một trạng thái vô lý của máy chủ.

CloudInit không phải là quản lý cấu hình. Nếu bạn chọn bắt đầu sử dụng phần mềm quản lý cấu hình, hãy sử dụng init điện toán đám mây chỉ cho một tác vụ: để khởi động lại Puppet / Chef / tác nhân khác.

Puppet không chỉ giúp bạn tự động cài đặt các gói, thiết lập các khóa ssh, hoặc điều chỉnh đống Tomcat của bạn. Nó đảm bảo trạng thái của sự vật. Khi nhà phát triển khắc phục sự cố ứng dụng Java lúc 3 giờ sáng và thay đổi cấu hình Tomcat của bạn, Con rối sẽ thay đổi lại. Bạn có thể nhanh chóng thay đổi phiên bản của Python cho tất cả hoặc nhóm các nút và nếu ai đó cài đặt phiên bản khác, Puppet sẽ thay đổi lại phiên bản đó.

Khi ngăn xếp ứng dụng của bạn thay đổi và bạn bắt đầu sử dụng, nói RabbitMQ hoặc Jetty hoặc RDBMS mới, bạn có thể dễ dàng kiểm tra và triển khai các thay đổi trên hàng chục hoặc hàng nghìn máy chủ.

Có nhiều lý do khác để sử dụng phần mềm quản lý cấu hình như báo cáo kết thúc, kiểm tra và tuân thủ bảo mật.


75
2017-08-17 00:50



Nó phụ thuộc. Đối với các dịch vụ chạy dài (thường là AD, DB), quản lý cấu hình có thể cần thiết. Nhưng đối với các máy chủ vứt bỏ thay thế khác, không thực sự; các máy chủ web được quản lý trong ASG, các nút cụm trong hadoop hoặc elasticsearch. Nếu tôi thay đổi cấu hình, tôi chỉ cần vứt bỏ máy chủ và khởi động máy chủ mới. - Sleeper Smith


Toàn bộ điểm quản lý cấu hình là để xoay các máy một cách dự đoán và nhất quán. CloudFormation và cloudinit là tuyệt vời khi bạn bị giới hạn hoàn toàn với AWS (mặc dù gỡ lỗi các mẫu CloudFormation là một trải nghiệm khổ sở), nhưng những gì về các ứng dụng sử dụng cả hai tài nguyên trung tâm dữ liệu và AWS, hoặc môi trường thử nghiệm cục bộ, hoặc các máy phát triển?

Nếu bạn tồn tại hoàn toàn trong AWS, tôi cho rằng bạn có thể thoát khỏi cloudinit và không có gì khác, nhưng tôi không tin rằng nó thực tế đối với các ứng dụng ở mọi quy mô (Netflix chẳng hạn, trước khi thực hiện AMI của họ bằng cách sử dụng các công nghệ PMNM mà họ đã viết và được thả ra thế giới; Video này để biết chi tiết). Các ứng dụng có sẵn cao là xuyên khu vực, thường dựa vào VPC, có xu hướng sao lưu vào trung tâm dữ liệu trên VPN và điều này thậm chí không chạm vào môi trường giới thiệu, dàn dựng, thử nghiệm hoặc phát triển. Là người bị tính phí với các máy cung cấp, Cuối cùng những điều tôi muốn làm là lặp lại công việc hoặc gặp khó khăn khi gỡ lỗi nhiều phương pháp cấp phép.

Do đó Chef hoặc Puppet. Chúng hoạt động tốt cho AWS khi chúng làm cho trung tâm dữ liệu của tôi, và cũng như cho máy phát triển của tôi đang chạy Vagrant như họ làm cho các môi trường giới thiệu mà tôi thỉnh thoảng cần khi đang bay. Tôi muốn khởi động nhiều hơn Chef hoặc Puppet từ cloudinit hơn là duy trì cả cloudinit và Chef hay Puppet.


61
2017-08-17 12:08



@ U0001: đã sửa liên kết video - Christopher


Đối với các máy chủ bị vứt bỏ, hãy nói chạy phía sau một nhóm autoscaling tôi sẽ nói cloudinit có lẽ là đủ. linux shell script hoặc windows PowerShell script nên làm các trick.

Nếu một máy chủ chạy dài của nó, bạn có kế hoạch quản lý có thể đầu bếp, con rối, hoặc docker có thể cung cấp cho bạn một lợi thế như đã đề cập trong câu trả lời được chấp nhận. Nếu bạn không thể thấy lợi thế sau khi sử dụng chúng, thì có thể bạn không cần công cụ.


5
2018-02-04 20:09



Tôi hoàn toàn đồng ý. Con rối và đầu bếp rất phức tạp và nếu bạn có thể thay thế một máy chủ đơn giản bằng cách xóa và đưa lên một máy chủ mới - thì tôi thực sự không khuyến khích sử dụng chúng. Có một số tình huống rối / đầu bếp là tuyệt vời nhưng bạn cần phải tăng thêm độ phức tạp của việc sử dụng sau đó trong mỗi kịch bản. - bobmarksie


Theo kinh nghiệm của tôi, có những thứ đơn giản dễ dàng thực hiện với các công cụ GUI out-of-the-box mà AWS cung cấp, nhưng khi bạn nhận được nhiều thứ phức tạp hơn, bạn bắt đầu tìm ra rằng có những hạn chế đối với những gì bạn có thể làm công cụ của họ.

Tại thời điểm đó, bạn có thể dừng lại, hoặc bạn có thể tìm thấy các công cụ khác (như Chef hoặc Puppet) có thể giúp bạn đạt được những mục tiêu phức tạp hơn cũng như làm những việc đơn giản hơn.

Lựa chọn của bạn.


0
2018-04-22 22:45