Làm thế nào để bạn áp dụng các thực tiễn phát triển như kiểm soát phiên bản, thử nghiệm và tích hợp / triển khai liên tục vào quản trị hệ thống?


18

Hãy tưởng tượng bạn sẽ quản lý một số máy chủ với một số dịch vụ khác nhau được sử dụng bởi một số người. Bây giờ nói rằng bạn muốn cấu hình lại hoặc thay thế một số phần mềm trên một trong những máy chủ đó. Rõ ràng là bạn không muốn làm việc trên các máy chủ đang sản xuất.

Nếu đây là thay đổi mã, với tư cách là nhà phát triển, tôi sẽ thực hiện thay đổi trên máy phát triển cục bộ của mình, kiểm tra cục bộ và cam kết thay đổi đối với hệ thống kiểm soát phiên bản. Những thay đổi sau đó có thể được triển khai trong môi trường dàn dựng, được thử nghiệm thêm và cuối cùng được triển khai trong môi trường sản xuất. Nó cũng sẽ dễ dàng cho tôi quay trở lại, nếu cần thiết.

Nói chung, hoặc cụ thể, làm thế nào để bạn đạt được điều này trong quản trị hệ thống?

(Điều đầu tiên bạn nghĩ đến là sử dụng máy ảo và đưa hình ảnh máy ảo vào kiểm soát phiên bản, nhưng tôi chắc chắn có rất nhiều tài liệu và giải pháp thông minh mà hiện tại tôi không biết.)


Bạn đang hỏi về các công cụ kỹ thuật hoặc về các khung để quản lý loại điều này? Bởi vì thật khó để nói về tùy chọn thứ hai mà không đề cập đến những thứ như thay đổi và quản lý phát hành từ bộ môn ITIL.
Rob Moir

@ DJPon3 Tôi muốn biết về cách tiếp cận chung (cách nghĩ về nó) và các công cụ để thực hiện. Hãy sử dụng đoạn cuối cùng của tôi làm điểm bắt đầu.
arex1337

Câu trả lời:


15

Câu trả lời ngắn gọn là "Quản lý triển khai hệ điều hành", "Quản lý cấu hình" và "Đóng gói phần mềm". Câu trả lời dài sau đây.

Tôi muốn thêm vào câu trả lời của Daniel Pittman với sự cố về những gì tạo thành một "hệ thống" trong quản trị hệ thống.

Một hệ thống hoặc một môi trường sẽ bao gồm:

  • May chủ
  • Hệ điều hành
  • Cấu hình
  • Gói nhà cung cấp; và
  • Gói nội địa

Bao bọc chúng sẽ là các quá trình như:

  • Triển khai hệ điều hành hoặc hình ảnh
  • Quản lý cấu hình
  • Quản lý gói phần mềm
  • Kiểm toán / đăng nhập
  • Giám sát
  • Sao lưu

Và bạn muốn kết hợp chúng lại với nhau để giúp bạn đạt được các mục tiêu phi chức năng như:

  • Lặp lại
  • Bảo trì
  • Đo lường
  • Hiệu suất
  • Khả năng theo dõi
  • Khả năng kiểm tra
  • Thay đổi

Đây là một bãi rác não nhanh chóng. Tôi chắc chắn nhiều hơn có thể được thêm vào tất cả các danh sách.

Câu hỏi của bạn chạm vào một số trong số này mà không sử dụng các từ cụ thể. Ví dụ, bạn muốn có thể triển khai dễ dàng và hoàn nguyên tức là muốn duy trì; bạn muốn làm điều đó trong một môi trường thử nghiệm và thử nghiệm cho đến khi nó vượt qua tức là độ lặp lại, khả năng kiểm tra và đo lường; bạn đang nghĩ đến việc đưa hình ảnh vm vào kiểm soát phiên bản vì bạn thích tính lặp lại của việc triển khai cấu hình và hệ điều hành.

Có rất nhiều công cụ hỗ trợ bạn trong việc này, một số trong số chúng được đề cập bởi Daniel. Một số khác là:

  • Kickstarts (dựa trên RedHat), Preseed (dựa trên Debian), WDS (MS Windows) để triển khai các môi trường hệ điều hành đã biết
  • Spacewalk / Vệ tinh (dựa trên RedHat), Chính sách nhóm (MS Windows) để quản lý cấu hình và gói
  • Hệ thống đóng gói YUM và APT để tạo, triển khai, nâng cấp và xóa gói (bộ nhị phân, dữ liệu và cấu hình bao gồm một phần mềm)
  • Nagios, OpenNMS và SCOM để theo dõi
  • Amanda, Bacula và Windows Backup Server để sao lưu
  • Munin, PCP và Hyperic để theo dõi hiệu suất
  • CVS, SVN, GIT hoặc Bazaar để kiểm soát phiên bản
  • Hudson và Jenkins cho quản lý xây dựng
  • Selenium và Robot để thử nghiệm
  • Bugzilla, Request Tracker và Jira để ghi âm, liên lạc và theo dõi

Một lần nữa, đây không phải là một danh sách toàn diện, nhưng một cái gì đó tôi giữ trong đầu để hướng dẫn tôi và hy vọng nó cũng sẽ giúp bạn.


Marvin là gì? Tôi không thể tìm thấy một tài liệu tham khảo về nó, hoặc đó là một lỗi đánh máy?
thelsdj

s / Marvin / Hudson / - cảm ơn vì đã phát hiện ra rằng @thelsdj :-)
nearora

16

Tuyên bố miễn trừ trách nhiệm: Tôi là một trong những nhà phát triển của Puppet.

Cách rõ ràng là chỉ áp dụng các khái niệm: xác định một chu kỳ phát triển / thử nghiệm / sản xuất và đẩy các thay đổi thông qua chúng. Sử dụng kiểm soát phiên bản để theo dõi hệ thống.

Nói một cách ngắn gọn, bắt đầu từ con đường đó dẫn đến việc phát hiện ra rằng bạn thực sự muốn các công cụ tự động hóa những thứ đó - về cơ bản, bạn muốn tự động hóa quản trị hệ thống, để bạn không sử dụng các kỹ thuật đó trên máy, bạn sử dụng chúng trên hệ thống quản lý máy móc.

Các công cụ như Chef , Puppet , SaltCFEngine đều là những công cụ phổ biến để giải quyết nhu cầu thứ hai đó. Chúng hoạt động theo hướng chung là biến quản trị hệ thống thành một giải pháp trung tâm mà bạn có thể kiểm soát phiên bản và kiểm tra.

Các DevOps phong trào là một nguồn thông tin hữu ích về cách để làm điều này. Mặc dù giới luật là sự hợp tác tốt hơn giữa các nhân viên Phát triển và Vận hành, nhưng nó cũng có xu hướng đi xuống cùng hướng này.


15
Bây giờ chúng tôi biết ai sẽ quấy rối về các câu hỏi rối của chúng tôi ...
ewwhite

1

Trong một thế giới Windows, những vấn đề này xoay quanh việc quản lý vòng đời ứng dụng đang được giải quyết với System Center 2012.

Trong Trình quản lý máy ảo trung tâm hệ thống (SCVMM), các dịch vụ được xác định bằng 'Mẫu dịch vụ' (ví dụ: dịch vụ ba tầng cổ điển) và môi trường thực thi được xác định là 'Đám mây' (ví dụ: phát triển, dàn dựng, sản xuất). Mẫu dịch vụ có thể được phiên bản và triển khai (theo kiểu tự động) cho các Đám mây khác nhau. Dưới vỏ bọc, SCVMM thực hiện công việc cung cấp, triển khai và định cấu hình phần cứng ảo (VM, v.v.) và phần mềm (HĐH, các thành phần ứng dụng, v.v.).

Trình quản lý dịch vụ trung tâm hệ thống là phần gắn kết điều này với nhau theo quan điểm quá trình. Ví dụ, quản lý vấn đề và kiểm soát thay đổi.

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.