Triển khai phần mềm của chúng ta bằng cách sử dụng Puppet?


8

. . :-)

Tôi đã xem xét các công cụ khác nhau để tự động hóa việc triển khai phần mềm tới một loạt các máy chủ, như cengine, Puppet và Chef. Cho đến nay, Puppet trông hấp dẫn nhất, nhưng tôi chắc chắn chưa cam kết với bất cứ điều gì.

Tất cả các công cụ này trông giống như chúng có thể làm rất tốt việc giữ cho một loạt các máy chủ được cập nhật với phần mềm đóng gói sẵn .

Điều tôi không nhận được là: làm thế nào để người ta sử dụng một công cụ (như Puppet) để quản lý việc triển khai phần mềm nội bộ của chính chúng ta? Tôi nghĩ rằng tôi đang ở một mất mát vì tôi đã nhìn thấy một ngàn hướng dẫn cho thấy làm thế nào để giữ cho Apache ensure => latest(mà khá mát mẻ), nhưng không có gì khá tương ứng với sử dụng trường hợp của tôi ngày hôm nay, đó là một cái gì đó giống như:

  1. Khi một con người ấn Nút,
  2. kéo nhánh A từ kho lưu trữ kiểm soát phiên bản B
  3. chạy lệnh C để biên dịch nó
  4. sao chép nhị phân D vào máy chủ từ E1 đến E10
  5. trên mỗi máy chủ, chạy lệnh F để thực hiện tất cả các thay đổi có hiệu lực

Con rối nghe có vẻ hay và tôi hoàn toàn thấy được lợi thế của cấu hình khai báo, không cần thiết so với một số tập lệnh shell, nhưng tôi chưa thấy bất kỳ hướng dẫn nào cho "bạn muốn cập nhật tập lệnh shell của mình lên Puppet (hoặc Chef, hoặc cengine), vì vậy đây là những gì bạn nên làm". Có một điều như vậy? Có rõ ràng với những người khác làm thế nào để lấy những thứ được cung cấp trong các tài liệu Puppet và sao chép hành vi tôi muốn không? Tôi chỉ không nhận được nó?

Điều nghe có vẻ như đối với tôi, cho đến nay, con người (# 1) sẽ tự đóng gói phần mềm (# 2 và # 3) bên ngoài cho Puppet, cập nhật thủ công cấu hình Puppet, sẽ kích hoạt Puppet để cập nhật máy chủ. .. có lẽ? (Tôi hơi bối rối ở đây, vì tôi chắc chắn bạn có thể nói.)

Cảm ơn!


Con rối dự định hoạt động với mẫu "Gói, Tệp, Dịch vụ". Con rối sẽ rất tuyệt để chuẩn bị máy chủ của bạn, nhưng một máy chủ xây dựng liên tục như Jenkins có thể là một công cụ tốt hơn cho trường hợp sử dụng này.
spuder

Câu trả lời:


5

Chúng tôi sử dụng con rối, nhưng chúng tôi không sử dụng nó cho việc triển khai ứng dụng của mình. Như bạn đã nói, bạn có thể đóng gói phần mềm của mình vào các cuộc tranh luận hoặc rpms, định cấu hình kho lưu trữ riêng tư của mình ở mọi nơi và sử dụng con rối để kiểm soát các phiên bản, nhưng bạn vẫn có thể chờ đợi làm mới 30 phút tiếp theo trên tất cả các máy chủ của mình.

Những gì tôi sẽ làm (và điều này gần với những gì chúng tôi làm, nhưng chúng tôi sử dụng đường ray để không có bước biên dịch):

  • Sử dụng con rối để cấu hình mọi thứ trên máy chủ ngoại trừ chính ứng dụng. Phụ thuộc, máy chủ web, người dùng, đường dẫn, vv
  • Yêu cầu máy chủ xây dựng tự động của bạn (tre, hudson, điều khiển hành trình, v.v.) đặt các vật phẩm được biên dịch vào trình quản lý kho lưu trữ như Nexus.
  • Sử dụng capistrano để đẩy xây dựng đến máy chủ của bạn.

Đầu bếp có thể có nhiều khả năng đẩy thời gian thực hơn; Tôi không quen thuộc lắm với nó.


Phần mềm đặc biệt này không sử dụng Ruby. Tôi có ấn tượng rằng Puppet khá bất khả tri, nhưng Capistrano được xây dựng để hoạt động tốt nhất với các ứng dụng Rails. Nhưng đã được vài năm kể từ khi tôi sử dụng nắp nên có thể nó đã thay đổi và tôi sẽ kiểm tra lại ngay bây giờ.
Ken

1
Capistrano nghiêng về Rails, nhưng linh hoạt và có thể dễ dàng được sử dụng cho các ngôn ngữ khác. Chỉ cần đọc các công thức triển khai mặc định và ghi đè lên chúng trong công thức riêng của bạn. Đó chỉ là lập trình. Công ty của tôi triển khai hàng tá ứng dụng PHP cho một số ít máy chủ thông qua Capistrano, mặc dù chúng tôi sử dụng giao diện Webistrano để làm cho nó dễ quản lý hơn.
Martijn Heemels

2
Capistrano vẫn ổn, nhưng MCollective và RunDeck được điều chỉnh tốt hơn để tích hợp với Puppet.
jgoldschrafe

Bạn cũng có thể xem qua Vải; nó hơi giống Capistrano, nhưng trong Python.
Xiong Chiamiov

1

Bước 1 đến 3 thường được tự động hóa trong quy trình xây dựng. Thông thường, đầu ra của quá trình này sẽ trải qua một chu kỳ thử nghiệm. Tôi đóng gói đầu ra để nó có thể được triển khai vào môi trường thử nghiệm tích hợp. Chỉ khi các bài kiểm tra tích hợp vượt qua thì bước 4 và 5 mới xảy ra.

Bước 5 của bạn ngụ ý ngừng hoạt động. Đối với một cái gì đó như apache, điều này có thể được xử lý bằng cách tắt và khởi động lại trong quá trình xoay vòng nhật ký. Một kịch bản crontab có thể xử lý này. Nếu bạn có thể xử lý các thay đổi trong vòng một giờ hoặc lâu hơn, chỉ cần bao gồm khởi động lại trong bước triển khai 4. Con rối hoặc cengine là các công cụ thích hợp cho bước 4. Điều này có thể được kích hoạt bằng cách cập nhật kho lưu trữ khi kiểm tra tích hợp vượt qua.


1

Tìm kiếm các công thức múa rối và bạn sẽ tìm thấy hàng tấn kịch bản sẵn sàng sản xuất. Có, bạn sẽ phải tự đóng gói phần mềm. Nếu bạn đang duy trì kho lưu trữ cá nhân của riêng mình thì bạn có thể sử dụng cờ đảm bảo => cờ mới nhất. Sau đó viết một công thức để nói với con rối để cài đặt phần mềm. Công thức sẽ cần phải được đặt trên máy chủ chính từ nơi nó sẽ được truyền đến các nô lệ.

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.