Quản trị hàng loạt / từ xa Linux


10

Bên cạnh cơ sở hạ tầng CNTT nội bộ, chúng tôi có khoảng 500 máy Linux lưu trữ các dịch vụ của chúng tôi cho thế giới trực tuyến. Chúng được nhóm thành một nhóm các cụm như Cơ sở dữ liệu An, Sản phẩm An, NFS, Backoffice, v.v. Hơn nữa, chúng được quản lý bởi một nhà cung cấp bên ngoài, theo thông số kỹ thuật và yêu cầu của chúng tôi.

Tuy nhiên, chúng tôi gặp rất nhiều rắc rối trong quá trình phát triển, triển khai và triển khai phần mềm (web-) - đặc biệt là vì môi trường phân tầng và dàn dựng hầu như không có gì chung với các hệ thống trực tiếp (tôi loại bỏ các chi tiết khó chịu ..) .

Do đó, tôi đã cố gắng tạo ra các máy ảo, sao chép các hệ thống sống khác nhau một cách chính xác nhất có thể và chuẩn bị chúng để kết nối với các cơ sở dữ liệu phát triển thay vì các cơ sở dữ liệu "thực" trong suốt cho các nhà phát triển (chúng không root). Điều này hoạt động khá tốt, nhưng ...

Tôi đã tự hỏi làm thế nào một người có thể quản trị các hệ thống đó từ xa và hàng loạt ? Có một số gia đình phần mềm tôi không biết? Hoặc, ít nhất, một số kỹ thuật hoặc nguyên tắc người ta nên làm quen với?

Chúng tôi sẽ cung cấp cho mọi nhà phát triển một loạt các hình ảnh để được chạy cục bộ (VirtualBox). Phòng QA. sẽ nhận được các cụm ảo (XEN hoặc Hyper-V). Nếu tôi cần cung cấp một mô-đun máy chủ bổ sung, định tuyến lại kết nối cơ sở dữ liệu mới hoặc chỉ muốn cập nhật mọi thứ được cung cấp bởi người quản lý gói ... làm sao tôi có thể làm điều đó mà không bị buộc phải đăng nhập vào mọi hệ thống và / hoặc yêu cầu đồng nghiệp của tôi tải xuống và chạy một số tập lệnh cố định?

Tôi tin rằng có rất nhiều giải pháp. Chà, bằng cách nào đó tôi quá ngu ngốc khi nhập từ khóa chính xác vào các công cụ tìm kiếm ... Hay vấn đề này không tầm thường như nó nghe?

Đối với hồ sơ:

  • Hầu như tất cả các hệ thống đang chạy Debian GNU / Linux 6.x "bóp"
  • Không có nhà phát triển nào bị buộc phải sử dụng một hệ điều hành cụ thể tại máy trạm của mình
  • Ngân sách hạn chế, tất nhiên, nhưng không quá nhỏ để mua phần mềm độc quyền
  • Một giải pháp liên quan đến nhà cung cấp đã nói ở trên của chúng tôi được ưu tiên

Câu trả lời:


15

Nó phụ thuộc chính xác những gì bạn cần và những gì bạn đang tìm kiếm. Nhưng nói chung, tồn tại nhiều giải pháp cho " quản lý cấu hình như:

  1. con rối
  2. đầu bếp
  3. kim tuyến
  4. ansible
  5. Muối

vv Cá nhân tôi muốn giới thiệu con rối vì nó có một cộng đồng lớn và rất nhiều công thức nấu ăn được cung cấp bên ngoài. Điều này cho phép bạn cấu hình và quản lý hệ thống tự động. Nếu bạn kết hợp điều này với kho riêng và cập nhật tự động thông qua ví dụ: unattended-upgradesbạn có thể tự động cập nhật hệ thống.

Một giải pháp khác là chỉ cung cấp các gói của riêng bạn như company-basevv tự động phụ thuộc vào phần mềm cần thiết và có thể tự động định cấu hình hệ thống của bạn.

Bạn cũng nên xem xét tự động triển khai (barebone và ảo hóa). Nếu bạn kết hợp điều này với quản lý cấu hình hoặc kho lưu trữ của riêng bạn, bạn có thể dễ dàng tự động hóa và cài đặt lại hệ thống của mình. Nếu bạn muốn bắt đầu với cài đặt tự động, hãy xem theforman hỗ trợ libvirt cũng như cài đặt xương trần và có hỗ trợ con rối tích hợp. Nếu bạn muốn tự làm điều đó, bạn có thể xem xét khởi động (redhat et. Al.) Hoặc "preseising" để tự động cấu hình hệ thống của bạn. Đối với Debian, bạn cũng có thể sử dụng một cái gì đó như debootstrap hoặc trình bao bọc có tên grml-debootstrap hỗ trợ hình ảnh ảo hóa.

Để giúp cung cấp hình ảnh VirtualBox cho nhà phát triển của bạn, hãy nhìn vào nó một cách mơ hồ, nó cho phép bạn tự động hóa việc tạo các hệ thống ảo hóa với VirtualBox hỗ trợ các đầu bếp, các con rối và các kịch bản shell để tùy chỉnh môi trường ảo của bạn.

Nếu bạn muốn sử dụng giải pháp của nhà cung cấp hiện tại, bạn nên hỏi họ cách họ quản lý hệ thống của bạn nhưng có lẽ đó sẽ là một kiểu quản lý cấu hình. Có thể chạy tác nhân của họ trên hệ thống của bạn nếu bạn có thể truy cập máy chủ cấu hình.

Đối với từ khoá google nhìn vào devops, configuration management, it automationserver orchestration.

Trong ngắn hạn tự động hóa càng nhiều càng tốt và thậm chí không nghĩ về việc làm thủ công.


1
Cảm ơn bạn! Đó là rất nhiều thứ để đọc qua, nhưng có vẻ khá hứa hẹn.
mjhennig

@mjhennig tôi chỉ cần thêm một số thông tin nữa. triển khai. Có rất nhiều tài nguyên có sẵn nhưng quan trọng nhất là bạn không nên tự mình làm mọi thứ thông qua ssh / shell phân tán mà có một số loại hệ thống cho nó.
Ulrich Dangel

2
Không có gì sai khi tự làm mọi thứ, đặc biệt là nếu các công cụ có sẵn không phù hợp với mục đích. Các hệ thống như Puppet phần lớn là các công cụ quản trị hệ thống, không phải quản lý cấu hình. Phần lớn các hệ thống mà tôi sử dụng thậm chí không thể truy cập được từ máy chủ trung tâm, nhưng từ máy tính xách tay của người dùng qua (tất cả mọi thứ) vpn - đã cố gắng thay đổi điều này trong ba năm. Bộ phận CNTT của chúng tôi được phân chia theo khu vực vì mỗi khu vực không thể truy cập vào khu vực khác. Kịch bản trong nhà là cần thiết trong một số tình huống. Đó cũng là nơi sự đổi mới bắt đầu.
Arcege

3
@Arcege tôi chỉ nâng cấp nhận xét của bạn, các kịch bản là cần thiết và bạn không phải chuyển đổi toàn bộ cơ sở hạ tầng của mình cùng một lúc. Phần quan trọng nhất là tự động hóa mọi thứ và làm cho nó lặp lại. Nhưng bản chất mô tả của con rối và đầu bếp có một số khía cạnh độc đáo, ví dụ bạn có thể kiểm tra và xác minh các lớp học múa rối với cucumber-puppet. Tất nhiên bạn có thể phát triển / phát triển khung của riêng mình bằng cách sử dụng lại các thành phần hiện có nhưng có vẻ như OP không có gì hiện tại và nếu bạn bắt đầu từ đầu tôi nghĩ tốt nhất nên sử dụng một khung hiện có.
Ulrich Dangel

Có, tôi đồng ý với các hoạt động tự động / lặp lại. Tôi có một số tập lệnh tự phát hoặc nút ấn để giao diện giữa các hệ thống hiện có như tích hợp Jenkins / Oc4j và Subversion / Bugzilla. Tôi chỉ không đồng ý (mạnh mẽ) với nhận xét của bạn "bạn không nên tự mình làm mọi thứ". Đôi khi các khung hiện có không được áp dụng, như trong tình huống của tôi, tôi đã mô tả.
Arcege

3

Ulrich đã đưa ra câu trả lời về việc triển khai phần mềm và thiết lập máy chủ tự động.

Các nguyên tắc đằng sau này là

  • Xác định máy chủ của bạn sẽ trông như thế nào - bao gồm phần mềm phổ biến được cài đặt theo mặc định, sơ đồ phân vùng và bố cục hệ thống tệp
  • Các máy chủ sản xuất, dàn dựng, thử nghiệm và phát triển không nên khác nhau về các tiêu chuẩn cơ bản này (nếu không bạn sẽ gặp vấn đề sau này - như bạn đã làm)
  • Sử dụng quản lý thay đổi phù hợp để ghi lại TẤT CẢ các thay đổi bạn đã thực hiện (bao gồm các thay đổi một dòng nhỏ trong bất kỳ cấu hình nào)
  • Luôn luôn thay đổi bạn trước tiên trong thử nghiệm, sau đó là phát triển, sau đó là dàn dựng và cuối cùng trong sản xuất

Bạn đã yêu cầu một công cụ tiện dụng để quản lý hàng loạt máy chủ - sở thích cá nhân của tôi là cluster-ssh ( cssh). Nhập một lần và thay đổi đồng thời trên nhiều máy chủ.

Nếu bạn phát hiện ra sự cố và khắc phục sự cố đó sẽ khắc phục sự cố:

  1. Áp dụng bản sửa lỗi cho Test / Dev / Staging / Prod (xem bên trên) nếu nó thực sự hoạt động
  2. Áp dụng bản sửa lỗi cho các mẫu ảo của bạn để các bản sao VM trong tương lai sẽ không gặp phải lỗi đó
  3. Áp dụng bản sửa lỗi cho quy trình cài đặt vật lý của bạn (kickstart / autoyast / anything)
  4. Áp dụng sửa lỗi cho TẤT CẢ các máy chủ

Nếu bạn đang phải đối mặt với hàng loạt máy chủ để khắc phục thì đây là một quá trình phải được ghi chép đầy đủ và cuối cùng, một nhóm khác sẽ kiểm tra xem bản sửa lỗi đã được áp dụng hoàn toàn chưa.

Chúng tôi sử dụng Mantis (mã nguồn mở, PHP) cho mục đích đó.


2

Tôi quản lý khoảng 30 sản phẩm và vài trăm máy chủ ở nhiều quốc gia. Tôi là người quản lý cấu hình phần mềm, vì vậy tôi không có quyền truy cập root (theo thiết kế), không chạm vào cơ sở dữ liệu hoặc máy chủ của họ (một lần nữa, theo thiết kế) và phải nhảy rất nhiều vòng vì bảo mật công ty. Nhưng tôi quản lý các cấu hình trong thử nghiệm, dàn dựng và sản xuất, bao gồm các liên kết và thay đổi cơ sở dữ liệu. Tôi có một số kịch bản mà đi ra ngoài để máy chủ sử dụng sự kết hợp của ssh, pythonvà shell script.

Những điều cơ bản cần suy nghĩ là:

  1. Những loại tương tác bạn sẽ có với máy chủ của bạn? Chỉ cần tải lên tập tin? Chạy chương trình dòng lệnh? Chạy máy khách X từ xa?
  2. Mức độ bảo mật nào là cần thiết để truy cập các máy chủ này? Tường lửa, mạng an toàn, vpn? Là sshđủ và từ một vị trí an toàn trung tâm?
  3. Bao nhiêu có thể được tự động hóa trên mỗi máy chủ? Bạn có thể cài đặt một chương trình trên mỗi máy chủ và chạy nó không, hoặc bạn có cần truyền phát chương trình qua một cái gì đó như sshđể chạy nó từ xa không? Bạn có thể kịch bản nó với expecthoặc chỉ một lời gọi dòng lệnh?

VirtualBox cung cấp rất nhiều công cụ dòng lệnh mà bạn có thể quản trị thông qua chỉ sshhoặc các hệ thống như puppetUlrich đề cập.


2
Chỉ là một gợi ý nhỏ. Virtualbox, hãy xem vagrantup.com nó có thể đơn giản hóa và tự động hóa việc tạo ra các hình ảnh ảo.
Ulrich Dangel

Thật không may, ngay cả việc truy cập mạng đơn giản giữa các môi trường kiểm tra từ xa là gần như không thể. Thiết lập một trang trại hộp ảo sẽ còn khó hơn. Tôi gặp khó khăn khi yêu cầu IT cập nhật phần mềm tiêu chuẩn với những gì đã lỗi thời hơn một năm vì nó không phải là một phần của kho 'RedHat tiêu chuẩn'.
Arcege

Điều giúp ích cho trải nghiệm của tôi về phần mềm lỗi thời là cho thấy phần mềm này là EOL hoặc có vấn đề về bảo mật. Thiết lập / kết nối mạng thường khó đạt được hơn nhiều, có thể cố gắng nhấn mạnh cách kết nối các môi trường kiểm tra khác nhau giúp tiết kiệm tiền, đơn giản hóa các quy trình, tiết kiệm thời gian QA hoặc làm cho môi trường kiểm tra thực tế hơn. Nó cũng có thể giúp nếu bạn đưa mọi người từ các chi nhánh khác nhau lên máy bay.
Ulrich Dangel
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.