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


84

Chúng tôi đang lên kế hoạch sử dụng các phiên bản AMI EC2 không được "nướng trước". Tức là khi chúng được tạo ra, chúng là những bản cài đặt trần của AWS linux. Quá trình bootstrap của chúng tôi sẽ kéo các cài đặt khác nhau mà chúng tôi cần, ví dụ như python, tomcat. Chúng tôi sẽ có tối thiểu là 3 phiên bản và tối đa là 8.

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

Điều tốt nhất tôi có thể thấy là nếu chúng tôi sử dụng Puppet, thì chúng tôi sẽ có chương trình khai báo dễ kiểm tra hơn để xem điều gì đang xảy ra so với tập lệnh. 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ể gặp phải hoặc không.

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 cho câu hỏi của tôi không?


2
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à chạy bởi tập lệnh dữ liệu người dùng ban đầu.
Eric Hammond

cloud-init là bất khả tri 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à microsoft Azure. ( cloud-init.io ) Trong khi AWS :: CloudFormation :: Init không phải là bất khả tri. Nó là đặc trưng của amazon.
Jordan Stewart

Câu trả lời:


83

Có lợi thế hơn CloudInit không? Vâng, hoàn toàn, 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 chạy 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ẽ phải đăng nhập vào máy chủ hoặc viết tập lệnh để làm như vậy, và chắc chắn là trạng thái máy chủ không hợp lý.

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 cloud init chỉ cho một tác vụ: khởi động Puppet / Chef / tác nhân khác.

Puppet không chỉ giúp bạn tự động hóa việc cài đặt các gói, thiết lập 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 mọi thứ. Khi một nhà phát triển đang 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, Puppet sẽ thay đổi nó trở lại. Bạn có thể nhanh chóng thay đổi phiên bản Python cho tất cả hoặc nhóm nút và nếu ai đó cài đặt một phiên bản khác, Puppet sẽ thay đổi nó trở lại.

Khi ngăn xếp ứng dụng của bạn thay đổi và bạn bắt đầu sử dụng, chẳng hạn như RabbitMQ, 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 back end, kiểm toán và tuân thủ bảo mật.


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

64

Toàn bộ điểm của việc quản lý cấu hình là quay vòng máy một cách dễ đoán và nhất quán. CloudFormation và cloudinit rất tuyệt vời khi bạn bị giới hạn hoàn toàn ở AWS (mặc dù gỡ lỗi các mẫu CloudFormation là một trải nghiệm tồi tệ ), nhưng còn các ứng dụng sử dụng cả 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 máy phát triển thì sao?

Nếu bạn hoàn toàn tồn tại trong AWS, tôi cho rằng bạn có thể sử dụng cloudinit và không có gì khác, nhưng tôi không tin rằng nó thực tế cho các ứng dụng ở bất kỳ quy mô nào (chẳng hạn như Netflix, đặt trước AMI của họ bằng công nghệ OSS mà họ đã viết và phát hành ra toàn thế giới; hãy xem video này để biết chi tiết). Các ứng dụng khả dụng cao có tính chất xuyên khu vực, thường dựa trên VPC, có xu hướng sao lưu vào trung tâm dữ liệu trên các VPN và điều này thậm chí không ảnh hưởng đến các môi trường demo, dàn dựng, thử nghiệm hoặc phát triển. Là một người chịu trách nhiệm với các máy cấp phép, điều cuối cùng 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 đó Đầu bếp hoặc Con rối. Chúng hoạt động tốt cho AWS cũng như 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ư chúng làm cho các môi trường demo mà tôi thỉnh thoảng cần khi đang di chuyển. Tôi muốn khởi chạy Chef hoặc Puppet từ cloudinit hơn là duy trì cả cloudinit và Chef hoặc Puppet.


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

5

Đối với các máy chủ vứt bỏ, giả sử chạy phía sau một nhóm tự động định tỷ lệ, tôi sẽ nói cloudinit có lẽ là đủ. linux shell script hoặc windows powershell scripts nên thực hiện thủ thuật.

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


Tôi hoàn toàn đồng ý. Puppet và Chef 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 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ố kịch bản rối / đầu bếp rất tuyệt nhưng bạn cần tăng thêm độ phức tạp của việc sử dụng sau đó trong mỗi kịch bản.
bobmarksie

0

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

Tại thời điểm đó, bạn có thể dừng lại hoặc có thể tìm 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.

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.