Câu hỏi hay nhất về đầu bếp


48

Tôi sử dụng và yêu rối. Tôi chuyển đến một công ty mới và họ đang nhận nuôi Chef. Vì vậy, tôi đang cố gắng học Chef nhưng gặp khó khăn trong việc kết nối tất cả lại với nhau vì tôi vẫn nghĩ trong Puppet =)

Đây là những câu hỏi của tôi:

  • Là tốt hơn để thiết lập vai trò trong Ruby DSL, JSON hoặc từ bảng điều khiển quản lý? Tại sao có nhiều cách để làm điều tương tự?
  • Bạn có thể tổ chức sách dạy nấu ăn thành thư mục con? vd
  • Tôi có tạo một sách dạy nấu ăn cho từng loại vai trò chỉ định những gì nó làm không? Tôi có những sách dạy nấu ăn này bao gồm các sách dạy nấu ăn khác không (tức là sách dạy nấu ăn cho vai trò máy chủ web của tôi bao gồm sách dạy nấu ăn apache). Tôi không chắc chắn cách xử lý phụ thuộc và kế thừa sách nấu ăn.
  • Có bất cứ điều gì như phân loại nút bên ngoài của Puppet để các nút tự động xác định vai trò của chúng không?
  • Có vẻ như bạn có thể định cấu hình mọi thứ bằng dao hoặc trong bảng điều khiển quản lý hoặc chỉnh sửa các tệp JSON? Điều này thật khó hiểu với tôi tại sao có quá nhiều cách để làm, nó bị tê liệt! Có một lý do để sử dụng cái này hay cái kia? Đến từ con rối, có vẻ như rất dễ vô tình cấu hình sai thứ gì đó bằng các công cụ này (nghĩa là bỏ đi thứ gì đó)
  • Làm cách nào tôi có thể tự động cung cấp các nút với Chef trong cụm dev của mình? Với Puppet, tôi kích hoạt một VM kết nối với con rối và khởi chạy một con rối và tự thiết lập (vai trò được xác định bởi trình phân loại nút bên ngoài). Làm thế nào để tôi làm điều này với đầu bếp? Cài đặt đầu bếp với các tệp pem / rb buộc nó vào máy chủ đầu bếp, tự nói với nút vai trò của nó bằng dao hoặc chỉnh sửa tệp này trong giao diện quản lý, sau đó khởi động một đầu bếp-khách hàng để tự thiết lập?

Tôi đã hoàn thành các hướng dẫn bắt đầu và tôi thấy họ có các hướng dẫn EC2, nhưng tôi chưa bao giờ sử dụng EC2 nên chúng tôi khó theo dõi. Tại thời điểm này, tôi đã lưu trữ Chef đang chạy và tôi bắt đầu chơi xung quanh với việc định cấu hình một nút duy nhất. Nơi nào tôi đi từ đây? Tôi có cần bắt đầu nhìn vào sách dạy nấu ăn công cộng không?

Các tài liệu trên Opscode đều ổn, nhưng gần như không tuyệt vời như Puppet. Có tài nguyên đầu bếp tốt nào khác mà tôi có thể thiếu trong các tìm kiếm của mình không?


5
Cách quá nhiều câu hỏi trong một bài. Xem xét tách từng cái ra thành của riêng nó. Toàn bộ cộng đồng sẽ tốt hơn và cũng sẽ giúp bạn có câu trả lời tốt hơn, chi tiết hơn.
Wesley

Câu trả lời:


84

Chỉnh sửa Câu hỏi và câu trả lời này đã cũ. Các thực hành tốt nhất dứt khoát được dạy thông qua các mô đun đào tạo tự học của Chef Chef Rally được sản xuất bởi Chef Software, Inc. Phần lớn câu trả lời ban đầu là bên dưới.

Trong câu trả lời này, "Chef" hoặc "Chef-client" thường đề cập đến Chef Infra, sản phẩm. Opscode được đổi tên thành Chef Software, Inc vào năm 2013 . Vào tháng 4 năm 2019, Chef đã mở mã nguồn cho tất cả các sản phẩm của mình, cùng với việc tạo tên thương hiệu nhất quán.

Không rõ liệu có tốt hơn để thiết lập vai trò trong ruby ​​DSL, JSON hoặc từ bảng điều khiển quản lý không? Tại sao có nhiều cách để làm điều tương tự?

Cập nhật 2019 : Các tệp chính sách là quy trình làm việc tốt nhất để sử dụng. Vai trò được coi là một thông lệ kém hơn và Chef Software, Inc. khuyên bạn nên chuyển sang Chính sách.

Có nhiều cách để làm điều tương tự vì mọi người có quy trình làm việc khác nhau. Bạn chọn quy trình làm việc tốt nhất cho môi trường của bạn. Hãy để tôi giải thích sự khác biệt là gì để bạn có thể đưa ra quyết định sáng suốt.

Ruby DSL for Roles tồn tại để giúp viết các vai trò dễ dàng hơn mà không cần biết cú pháp của JSON. Đó là một cách đơn giản để bắt đầu với Vai trò. Khi bạn đã thực hiện các thay đổi, bạn tải chúng lên Chef Server bằng dao.

knife role from file myrole.rb

Điều này chuyển đổi vai trò thành JSON và lưu trữ nó trên máy chủ. Nếu bạn có một môi trường thực thi Kho lưu trữ đầu bếp nơi vai trò của bạn là nguồn gốc của sự thật, thì điều này hoạt động khá tốt.

JSON là thứ mà Chef Server lưu trữ, vì vậy bạn cũng chỉnh sửa JSON trực tiếp trong bảng điều khiển quản lý. Nó không yêu cầu nhiều trường hơn Ruby DSL để Dao nhận ra nó đúng cách để tải lên. Những chi tiết đó được ẩn ở một mức độ nào đó thông qua giao diện người dùng web.

Nhược điểm của việc sử dụng bảng điều khiển webui / quản lý để chỉnh sửa vai trò là chúng không có trong hệ thống kiểm soát phiên bản cục bộ của bạn trừ khi bạn tải xuống từ máy chủ. Bạn có thể làm điều này với dao:

knife role show myrole -Fj

Con -Fjdao bảo "hiển thị ở định dạng JSON." Bạn có thể chuyển hướng đầu ra thành tệp .json nếu muốn.

Cập nhật nhiều năm trước : Có các lệnh dao bổ sung để làm việc với các tệp trong kho đầu bếp cục bộ. Hiện tại các lệnh này chỉ hỗ trợ các tệp định dạng JSON. Một RFC cộng đồng được mở sẽ giải quyết thêm hỗ trợ cho Ruby DSL cho các plugin này. Dưới đây là một bản tóm tắt ngắn gọn về quy trình làm việc.

Kiểm tra sự khác biệt nội dung giữa máy chủ và tệp cục bộ.

knife diff roles/myrole.json

Tải lên tệp vai trò định dạng JSON. Đường roles/dẫn là bắt buộc. Điều này được ánh xạ tới cùng điểm cuối API trên máy chủ.

knife upload roles/myrole.json

Tải xuống nội dung từ máy chủ ghi đè lên nội dung của tệp trong kho lưu trữ.

knife download roles/myrole.json

Các lệnh này đến từ knife-essentials, được tích hợp vào gói máy khách đầu bếp.

Bạn có thể tổ chức sách dạy nấu ăn thành thư mục con? vd

Không. Con dao có kỳ vọng nơi sách dạy nấu ăn sẽ sống vì nó sử dụng API để tải sách nấu ăn lên Máy chủ. Điều này được đặt trong knife.rbvới cookbook_path. Trong các phiên bản cũ hơn của Chef Infra, bạn có thể chỉ định một loạt các đường dẫn cho sách dạy nấu ăn, nhưng điều này không được chấp nhận vì nó cần bảo trì nhiều hơn và gây nhầm lẫn cho người dùng.

Theo quy ước, chúng tôi đặt tên cho sách nấu ăn cụ thể của khách hàng hoặc trang web cụ thể với tên được đặt trước trong sách hướng dẫn nấu ăn. Ví dụ của bạn, nó sẽ là:

chef-repo/cookbooks/ourcompany_customsoftware

Có thể có nhiều sách dạy nấu ăn khác nhau cho "công ty của chúng tôi" tùy thuộc vào những gì bạn đang làm.

Tham khảo thêm:

Tôi có tạo một sách dạy nấu ăn cho từng loại vai trò chỉ định những gì nó làm không? Tôi có các sách dạy nấu ăn này bao gồm các sách dạy nấu ăn khác không (ví dụ: sách dạy nấu ăn cho vai trò máy chủ web của tôi bao gồm sách dạy nấu ăn apache). Tôi không chắc chắn cách xử lý phụ thuộc và kế thừa sách nấu ăn.

Không có mối quan hệ trực tiếp hoặc phụ thuộc giữa vai trò và sách dạy nấu ăn.

Vai trò có một danh sách chạy, trong đó chỉ định các công thức nấu ăn và các vai trò khác nên được áp dụng cho bất kỳ nút nào có vai trò đó. Các nút có một danh sách chạy có thể chứa vai trò hoặc công thức nấu ăn. Khi Chef chạy trên nút, nó sẽ mở rộng danh sách chạy cho tất cả các vai trò và công thức nấu ăn mà nó bao gồm, sau đó tải xuống các sách nấu ăn cần thiết. Trong danh sách chạy nút:

recipe[apache2]

Đầu bếp sẽ tải xuống apache2sách dạy nấu ăn cho nút để nó có thể áp dụng công thức này.

Bạn có thể có một cuốn sách nấu ăn cụ thể cho một vai trò trong cơ sở hạ tầng của bạn. Thông thường hơn, bạn sẽ có sách dạy nấu ăn để thiết lập một số loại dịch vụ nhất định như apache2, mysql, redis, haproxy, v.v. Sau đó, bạn sẽ đặt chúng vào các vai trò phù hợp. Nếu bạn có những thứ cụ thể của ứng dụng tùy chỉnh cần phải thực hiện để hoàn thành vai trò, thì bạn có thể viết nó vào một cuốn sách nấu ăn tùy chỉnh (như tôi đã tham khảo ở trên).

Tham khảo thêm:

Có bất cứ điều gì như con rối phân loại nút bên ngoài để các nút tự động xác định vai trò của chúng không?

"Đúng." Chef Infra Server tự động lưu trữ dữ liệu nút (trong JSON) và máy chủ cũng tự động lập chỉ mục tất cả dữ liệu nút cho tìm kiếm.

Tham khảo thêm:

Có vẻ như bạn có thể định cấu hình mọi thứ bằng dao hoặc trong bảng điều khiển quản lý hoặc chỉnh sửa các tệp JSON? Điều này thật khó hiểu với tôi tại sao có quá nhiều cách để làm, nó bị tê liệt! Có một lý do để sử dụng cái này hay cái kia?

Chef Infra Server có API RESTful gửi và nhận phản hồi JSON. Dao và bảng điều khiển quản lý là giao diện người dùng để tương tác với API theo quan điểm quản trị.

Bạn có thể sử dụng công cụ bạn thích hơn, mặc dù bảng điều khiển quản lý không có nhiều tính năng như Dao. Hầu hết mọi người sử dụng Chef Infra đều thích giao diện dòng lệnh vì sức mạnh và tính linh hoạt mà nó cung cấp, ngay cả những người đang sử dụng Chef Infra trên Windows. Hơn nữa, knifelà một công cụ dựa trên plugin mà bạn có thể tạo các plugin mới để tương tác với Chef Infra Server hoặc với các phần khác trong cơ sở hạ tầng của bạn.

Chef Infra là một tập hợp các thư viện, nguyên thủy và API. Nó cho phép bạn linh hoạt để xây dựng hệ thống quản lý cấu hình hoạt động tốt nhất cho cơ sở hạ tầng của bạn.

Đọc thêm:

Làm cách nào tôi có thể tự động cung cấp các nút với đầu bếp trong cụm nhà phát triển của mình? Với con rối, tôi kích hoạt một VM kết nối với con rối và khởi động một con rối và tự thiết lập (vai trò được xác định bởi trình phân loại nút bên ngoài). Làm thế nào để tôi làm điều này với đầu bếp? - Cài đặt đầu bếp với các tệp pem / rb buộc nó vào máy chủ đầu bếp, tự nói với nút vai trò của nó bằng dao hoặc chỉnh sửa tệp này trong giao diện quản lý, sau đó khởi động một đầu bếp-khách hàng để tự thiết lập?

Bạn sẽ muốn sử dụng plugin bootstrap dao. Đây là một plugin tích hợp đi kèm với dao. Bạn gọi nó như thế này:

knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'

Điều này sẽ:

  • SSH đến hệ thống đích (10.1.1.112) với tư cách là rootngười dùng sử dụng khóa SSH (bạn có thể ssh là người dùng khác và sau đó sử dụng --sudo).
  • Cài đặt Ruby
  • Cài đặt đầu bếp
  • Tạo tệp cấu hình Chef cho Máy chủ đầu bếp của bạn, đọc cấu hình của dao (.chef / dao.rb).
  • Sao chép khóa riêng RSA "xác thực" mà nút sẽ sử dụng để tự động đăng ký với Chef Server.
  • Chạy chef-clientbằng cách sử dụng dấu phẩy được phân tách được liệt kê. Trong ví dụ này chỉ có webservervai trò được áp dụng.

Điều này giả định rằng hệ thống đích đã được cung cấp, có địa chỉ IP và bạn có thể SSH với quyền root. Tùy thuộc vào chính sách địa phương và quy trình cung cấp của bạn, bạn có thể cần điều chỉnh cách thức hoạt động của nó. Trang bootstrap dao trên wiki mô tả thêm về cách thức hoạt động của nó.

Knife cũng có plugin cho một số nhà cung cấp điện toán đám mây công cộng như Amazon EC2 và Rackspace Cloud. Có các plugin có sẵn cho các môi trường đám mây riêng như Eucalyptus và OpenStack. Ngoài ra còn có các plugin cho VMware, Vsphere và các plugin khác. Bạn có thể xem thêm thông tin trong tài liệu.

Đọc thêm:

Có tài nguyên đầu bếp giỏi nào khác mà tôi có thể thiếu trong các tìm kiếm của mình không?

Các đầu bếp tài liệu là nguồn chủ yếu của tài liệu.

Các Tìm hiểu Chef Rally là một loạt các module tự hướng dẫn mà bạn có thể tìm hiểu tất cả về các khía cạnh khác nhau của Chef Infra, và các sản phẩm Chef khác.

Tôi đã từng duy trì một blog nơi tôi đã đăng các mẹo, thủ thuật và hướng dẫn về Đầu bếp Infra: http://jtimberman.housepub.org/ . Tôi đã có một loạt gọi là " mẹo nhanh ". Do hoàn cảnh thực tế và các cam kết khác, tôi không còn thời gian để duy trì trang web, nhưng tôi có thể quay lại trang này trong tương lai.

Khách hàng đầu bếp có thể nhận trợ giúp và hỗ trợ trên trang web hỗ trợ:

Cộng đồng người dùng Chef là một nguồn trợ giúp tuyệt vời:

Tài nguyên bổ sung có sẵn trên Chef phần mềm, trang web Inc. .

Tôi hi vọng cái này giúp được.


2
Đây là một tài nguyên có giá trị, xin vui lòng liên kết thường xuyên hơn với nó.
Pooyan Khosravi

Bất cứ điều gì để thêm / cập nhật 7 năm sau? ;)
Spechal
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.