Một đầu bếp cai trị tất cả


10

Tôi đang tìm kiếm đầu bếp để tự động hóa việc triển khai Magento - cả hai vào các tùy chọn lưu trữ Magento tiêu chuẩn cũng như các môi trường như EC2. Tôi đã đi vòng quanh và tôi thấy rất nhiều công thức nấu ăn, nhưng không có công thức nào thực sự gây ấn tượng với tôi như một công thức kinh điển. Có một kịch bản đầu bếp cụ thể nào tốt hơn / tốt nhất không? Ngoài ra, nếu bạn đã thực hiện triển khai đầu bếp với PHP trước đây, điều gì bạn muốn bạn biết khi bạn bắt đầu?


2
Tôi ước tôi đã biết Ansible ( ansible.com/home ) tồn tại.
Reid Blomquist

Một số lựa chọn thay thế khác nếu bạn quan tâm, saltstack.comdocker.com . Cả hai đều có vẻ hứa hẹn nhưng tôi chưa có cơ hội làm việc với một trong hai.
beeplogic

1
Tôi đã thử nghiệm với capistrano-ash: github.com/augustash/capistrano-ash
pzirkind 04

Tôi nghĩ Reid đang làm gì đó, Alan re: Ansible. Nó không yêu cầu một tác nhân (hoạt động với các khóa ssh +) được cài đặt trên máy khách, đó là một hệ thống khai báo vì vậy nó không có tác dụng và nói chung tôi thấy rằng việc sử dụng nó để lại cho tôi "làm một việc, làm đơn giản, và làm tốt điều đó "cảm giác giống như unix so với các hệ thống mạnh hơn như đầu bếp, bù nhìn và muối. Đó là trong khi bạn đăng bài này ban đầu, có bất kỳ cập nhật nào về suy nghĩ của bạn sau khi làm việc với đầu bếp một thời gian không?
Bryan 'BJ' Hoffpauir Jr.

Câu trả lời:


6

Gần như không thể có một bộ thói quen một kích cỡ phù hợp với tất cả các thói quen. Tôi đã thành công khi viết một tập lệnh Bash thực thi chef-clientchạy trên danh sách các máy chủ được cung cấp bởi knife search. Các thủ tục trông giống như thế này

Mã nguồn mở Chef Server 10.18.2 trên Ubuntu 12.04 LTS

  1. Khởi tạo biến
  2. Nhận băm sửa đổi mới nhất từ ​​GitHub cho $branch
  3. Vô hiệu hóa giám sát tính khả dụng để ngăn cảnh báo về trạng thái HTTP 503
  4. Chuyển tất cả các máy chủ web và tiện ích sang chế độ bảo trì
  5. Triển khai tiện ích
    1. Dừng cron của Magento và tất cả công nhân Resque
    2. Địa chỉ phụ thuộc hệ thống tập tin
    3. Đầu bếp kiểm tra bản sửa đổi được xác định là một bản phát hành mới
    4. Địa chỉ phụ thuộc Magento (gói, mô-đun, hệ thống tệp, quyền)
    5. Cập nhật tất cả các tác vụ và kịch bản cron cho tự động hóa
    6. Triển khai tất cả các mô-đun (nhà soạn nhạc)
    7. Xóa bộ nhớ cache với n98-magerun.phar
    8. Chạy mọi di chuyển với n98-magerun.phar
    9. Kích hoạt lại Magento cron
    10. Bắt đầu công nhân Resque
  6. Triển khai máy chủ web đầu tiên
    1. Địa chỉ phụ thuộc hệ thống tập tin
    2. Đầu bếp kiểm tra định nghĩa $revisionlà một bản phát hành mới
    3. Địa chỉ phụ thuộc Magento
    4. Triển khai tất cả các mô-đun Magento
  7. Đánh dấu một triển khai mới trong Di tích mới
  8. Cho phép dịch vụ giám sát phòng trống
  9. Vô hiệu hóa dịch vụ cân bằng tải cho tất cả các máy chủ web khác
  10. Tiếp tục triển khai trên máy chủ web, tuần tự đưa chúng trực tuyến
  11. Thực hiện thói quen đầu bếp cho các máy chủ tìm kiếm

Nguồn: https://gist.github.com/parhamr/6177160#file-2-deployment


4

Đây là cách tôi đã tiếp cận khu vực này trong khi mặc vai trò muốn sysadmin / devops. Hầu hết những điều sau đây sẽ chỉ là những nguyên tắc chung mà tôi cố gắng tuân theo và không phải là Chef cụ thể.

Cuối cùng tôi đã đi với Puppet vì tôi thấy ở đó có nhiều tài nguyên hơn và cảm thấy dễ dàng hơn để nhận cho tôi.

Tôi đã xem xét các mô-đun dựng sẵn khác nhau có sẵn cho những thứ như apache, php5, v.v. Nhiều người trong số họ dường như làm nhiều hơn tôi cần và không quen thuộc với nền tảng mà tôi không tin những gì đang diễn ra. Tôi quyết định sẽ đơn giản hơn đối với tôi khi chỉ xác định những gì tôi cần thực hiện trên mỗi loại nút.

Tôi đã bắt đầu quá trình bằng cách cung cấp môi trường phát triển cục bộ của nhóm (vargrant + hộp ảo). Đối với mỗi dịch vụ / thành phần tôi đã tạo một mô-đun: php5, apache2, redis, mysql, v.v.

Khi môi trường dev ổn định / hoạt động, tôi bắt đầu xây dựng môi trường QA. Tôi đã định nghĩa các loại nút chung cho các máy chủ web, redis, véc ni, v.v ... sử dụng lại các mô-đun tương tự như dev. Một khi điều này được thực hiện Giai đoạn và Sản xuất cần những thay đổi tối thiểu để bắt đầu và chạy.

Khi bạn đang trải qua và viết các công thức / mẫu của bạn, bạn nên xem xét làm thế nào nếu có thể được sử dụng lại / khái quát hóa. Đừng mã cứng những thứ như đường dẫn hoặc người dùng / nhóm có thể thay đổi giữa các bản phân phối / dự án / môi trường. Vì bạn đang xem xét một cách tiếp cận tổng quát, tôi đoán rằng một rào cản lớn sẽ giải quyết sự khác biệt giữa các bản phân phối * nix.

Quan trọng nhất, giữ là đơn giản. Tự động hóa / tiêu chuẩn hóa các phần quan trọng nhất / tốn thời gian của môi trường. Lặp đi lặp lại, tiến hóa.

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.