Làm cách nào tôi có thể quản lý hàng trăm BMMI IPMI?


30

Tôi có hơn 200 máy tính có thể cung cấp dịch vụ IPMI . Các máy chủ được sản xuất bởi một số công ty khác nhau (SuperMicro, Dell, v.v.) và có 6-7 mô hình BMC từ khoảng 5 nhà cung cấp khác nhau và mỗi mô hình đều có những đặc điểm riêng.

Cho đến nay chúng tôi đã cấu hình BMC bằng cách sử dụng kết hợp DHCP và cấu hình thủ công từng BMC. Cấu hình thủ công có thể được thực hiện bằng CD-ROM có thể khởi động, cấu hình từ BIOS (Nếu được hỗ trợ), từ hệ điều hành máy chủ với tiện ích như ipmitool , freeipmi , v.v. hoặc sử dụng ipmitool từ xa nếu chúng ta có thể xác định địa chỉ mạng của thiết bị.

Tuy nhiên, cấu hình thủ công này là khá tẻ nhạt. Trong một số trường hợp, chúng tôi muốn thay đổi cài đặt trên toàn cầu trên tất cả các BMC, yêu cầu quản trị viên chạy một lệnh chống lại hàng tá hộp. Vì các BMC được cung cấp bởi các nhà cung cấp khác nhau và mỗi mô hình BMC có thể có các đặc điểm riêng, nên cùng một lệnh không phải lúc nào cũng hoạt động trên tất cả các BMC.

Có tiện ích nào cho phép tôi định cấu hình hàng loạt BMC trên hàng tá hộp không? Giả sử tôi muốn truy vấn một tham số trên hàng chục BMC khác nhau hoặc thay đổi mật khẩu, vô hiệu hóa quyền truy cập HTTP vào WebUI hoặc vô hiệu hóa lỗ hổng bảo mật mật mã khét tiếng .

Điểm thưởng cho bất kỳ tiện ích nào cho phép tôi cập nhật chương trình cơ sở BMC, cần thiết để giảm thiểu một số lỗ hổng bảo mật


3
Điều này chắc chắn giống như một cái gì đó bạn có thể làm nếu bạn rối / mcollective. Bạn sử dụng facter , có thể với một số sự kiện tùy chỉnh để phát hiện loại thiết bị nào bạn có, sau đó bạn định cấu hình mọi thứ bằng cách sử dụng con rối hoặc bằng cách đẩy các lệnh bằng mcollective.
Zoredache

Bạn cũng có thể muốn xem xcat . Nó không phức tạp như con rối khi nói đến quản lý cấu hình, đặt có vỏ phân tán tích hợp, có thể hoạt động theo nhóm và tích hợp chặt chẽ với IPMI.
Isaac

Puppet Razor cũng có thể là một giải pháp, mặc dù tôi chưa tìm hiểu về nó: vdatacloud.com/bloss/2012/05/23/ chủ
Stefan Lasiewski

Tôi đang ở Puppetconf và tôi vừa nói chuyện với người quản lý dự án cho Mcollective (Còn được gọi là Puppet Enterprise dàn nhạc). Của Mcollective quản lý các nút của bạn (ở cấp độ HĐH), sau đó làm cho nó hoạt động ở cấp IPMI có vẻ khá xa so với những gì Mcollective được thiết kế cho. Nhưng nó có thể là có thể.
Stefan Lasiewski

Câu trả lời:


16

Tôi có thể sử dụng Ansible . Đó là một công cụ quản lý cấu hình / điều phối cấu hình rất đơn giản, dễ bắt đầu hơn so với Puppet (Puppet từng là lựa chọn của tôi cho việc này, nhưng không phải lúc nào cũng phát hiện ra Ansible).

Lợi ích của Ansible ở đây là nó giao tiếp trực tiếp qua SSH, do đó bạn có thể bắt đầu sử dụng thông tin xác thực và quy trình làm việc SSH hiện có của mình.

Nếu bạn hiện đang định cấu hình BMC của mình bằng ipmitool, bạn có thể thực hiện một số việc như:

Xác định tệp Máy chủ - Điều này cho Ansible biết máy chủ nào nằm trong nhóm bmc (trong trường hợp này) và sẽ chạy nội dung nào.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

Và cứ thế ... Bạn cũng có thể sử dụng tên máy chủ trong tệp đó, miễn là chúng có thể phân giải được.

Sau đó tạo một "playbook", là tập hợp các lệnh để chạy trên mỗi máy chủ trong một nhóm máy chủ. Bạn muốn có kiểu bố trí thư mục từ trên xuống:

ansible/
   playbooks/
      bmc.yml
      roles/
        bmcconfig/
           files/
           handlers/
             main.yml
           tasks/
             main.yml
           templates/
   group_vars/
      all

Một playbook có Vai trò , đó là những phần nhỏ của cấu hình mà bạn có thể chia nhỏ và sử dụng lại.

Vì vậy, tôi sẽ tạo một tệp có tên bmc.yml(Tất cả cấu hình Ansible nằm trong tệp YAML)

---
- name: Configure BMC on the hosts
  hosts: bmc
  user: root
  roles: 
    - bmcconfig

Sau đó, bên trong roles/bmcconfig/tasks/main.ymlbạn có thể bắt đầu liệt kê các lệnh sẽ được chạy trên mỗi máy chủ, để giao tiếp với ipmi.

---
  - name: Install ipmitool
    apt: pkg=ipmitool state=installed
  - name: Run ipmitool config
    shell: ipmitool -your -options -go -here

Khi bạn chạy playbook, với ansible-playbook -i hosts bmc.ymlcác lệnh được liệt kê tasks/main.ymlcho từng vai trò sẽ được thực hiện theo thứ tự từ trên xuống trên mỗi máy chủ được tìm thấy trong nhóm máy chủ bmctronghosts

group_vars/all là một tệp thú vị, nó cho phép bạn xác định các cặp biến và giá trị khóa-giá trị có thể được sử dụng trong sổ chơi của bạn.

để bạn có thể định nghĩa một cái gì đó như

ipmitool_password: $512315Adb

trong group_vars/allkết quả của bạn và bạn có thể có một cái gì đó như:

shell: ipmitool -your -options -go -here --password=${ipmitool_password}

trong vở kịch.

Bạn có thể tìm hiểu thêm thông tin về cách sử dụng "mô-đun" - các thành phần của Ansible cho phép bạn thực hiện công cụ, cách tự viết: D, v.v. tại Trang Tài liệu Ansible .


12

Tôi đã viết một công cụ python nhỏ để chạy lệnh trên 1000 máy của chúng tôi, (và bmc của họ, drac's, ilo và im)

Những gì tôi đã làm là viết một python-framework có tên vsc-Manage nơi tôi có thể chạy các lệnh được gửi đến máy chủ hoặc bmc, sau đó định cấu hình loại máy nào cần lệnh gì.

Tôi có một vài lớp kết hợp hỗn hợp các lệnh này,

Vì vậy, đối với một máy imm nó sẽ ssh vào imm, và chạy power off(trong một hy vọng kịch bản loại chiều)

Đối với khung gầm imb của chúng tôi , nó sẽ chạy nó trên khung

power -%(command)s -T system:blade[%(blade)s]

Đối với một số dell dracs, nó sẽ chạy cái này trên os (của một nút chủ)

idracadm -r %(hostname)s -u root -p '%(password)s' serveraction %(command)s

Đối với các hệ thống hp mới hơn của chúng tôi có ipmi (và tôi thấy ngày càng nhiều hơn trong những ngày này), nó sẽ chạy cái này trên bản gốc:

ipmitool -I lanplus -H %(hostname)s -U %(user)s -P '%(password)s' chassis power %(command)s

hoặc hệ thống dell mới hơn cần ipmitool -I open , bạn có thể cần chơi với giao thức một chút.

Đối với các cài đặt không được bao gồm trong tiêu chuẩn ipmi, tôi đã triển khai một số điều từ DMTF SMASH CLP , ví dụ: bật công cụ định vị dẫn:

start /system1/led1

Tất cả điều này trong một công cụ dòng lệnh có thể chạy từ máy tính xách tay của chúng tôi, sẽ kết nối với nút chính bên phải, chạy lệnh bên phải cho nút bên phải và trả về đầu ra, với một danh sách lỗi bổ sung nếu có (dựa trên đầu ra trên stderr và / hoặc exitcode)

Điều này đã được chứng minh là rất tiện dụng và việc thêm hỗ trợ cho một lớp phần cứng mới giờ đây tương đối dễ dàng (Nhờ thực tế là hầu hết các nhà cung cấp đều hỗ trợ đầy đủ ipmi và DMTFSMASHCLP ngay bây giờ)

Điều này không phù hợp với cấu hình ban đầu (nó cần bmc để có một ip duy nhất và cổng chính xác, nhưng đây là những gì các nhà cung cấp của chúng tôi cần cung cấp cho chúng tôi khi giao hàng) nhưng có thể làm hầu hết mọi thứ khác (cũng chạy các lệnh tùy ý trên máy chủ hoạt động hệ thống và tự động lên lịch thời gian chết trong icinga / nagios khi bạn khởi động lại một nút và / hoặc thừa nhận 1000 máy chủ và dịch vụ trong icinga / nagios cùng một lúc)

Cập nhật firmware bmc và thêm hỗ trợ cho các thiết bị chuyển mạch của chúng tôi là những vấn đề nổi bật đã được lên kế hoạch.

CẬP NHẬT

Vì ít nhất một số người có vẻ quan tâm, tôi đã cho nó một lần đánh bóng cuối cùng vào ngày hôm nay và mở nguồn này tại https://github.com/hpcugent/vsc-manage

Trong khi điều này được nhắm mục tiêu rất nhiều vào quy trình làm việc của chúng ta (quattor và / hoặc pbs), tôi hy vọng nó ít nhất có thể thú vị.


Cảm ơn vì điều đó! Có bất kỳ lợi thế nào mà công việc của bạn có trên các giải pháp đã được thiết lập như Ansible không?
MikeyB

Tôi chưa bao giờ nghe từ Ansible trước đây, chắc chắn sẽ xem xét nó.
Jens Timmerman

Theo như tôi thấy, Ansible chưa hỗ trợ cho impi và DMTF SMASH.
Jens Timmerman

Thật thú vị, Jens. Cảm ơn bạn đã chia sẻ dự án này. Ansible + vsc-Manage bắt đầu trông thực sự hữu ích trong việc xử lý các máy chủ.
ILIV

ILIV, tôi nghĩ sẽ thật tuyệt nếu tôi có thời gian để thêm tất cả các tính năng của vsc-Manage vào ansible ;-)
Jens Timmerman

3

Tôi ngạc nhiên không ai đề cập đến MAAS ( http://maas.io/ ), nơi thực hiện chính xác những gì bạn đang tìm kiếm. Nó có thể tự động cấu hình và quản lý BMC, ngoài ra, triển khai bất kỳ HĐH nào lên các nút mà bạn đã liệt kê vào hệ thống. Nó có giao diện người dùng web và API RESTful và được thiết kế để tích hợp với bất kỳ hệ thống tự động hóa nào.

Khi máy PXE khởi động lần đầu tiên, MAAS sử dụng IPMI trong băng tần để tự động thiết lập thông tin đăng nhập cho bạn. Từ thời điểm đó trở đi, bạn có thể dễ dàng khởi động và tắt máy từ xa.

Để biết thêm chi tiết, hãy kiểm tra tài liệu MAAS BMC Power Type cho biết cách định cấu hình thủ công BMC cho bất kỳ nút nào được liệt kê trong MAAS.


Một mẹo hay, cảm ơn. Trông khá tuyệt. MAAS của Ubuntu dường như thực hiện một số hoạt động cung cấp, quản lý vòng đời tốt đẹp và có vẻ như nó có một số công cụ quản lý IPMI hữu ích. Chúng tôi đã sử dụng The Foreman rồi, hiện đã có một số điều này. Tuy nhiên, quản lý IPMI của Foreman khá yếu và nó không cung cấp nhóm hoặc cấu trúc tổ chức, nhưng ít nhất nó có một cái gì đó. Chúng tôi sử dụng nó kết hợp với một số ít các công cụ khác để quản lý toàn bộ bộ dụng cụ và caboodle.
Stefan Lasiewski

Lưu ý rằng Foreman không có Tổ chức và Vị trí (xem dự án.theforeman.org / project / foreman / wiki / ám) kể từ v1.1. Bạn có thể sử dụng các tính năng này (cùng với Nhóm máy chủ) để cung cấp các bộ sưu tập hợp lý (thậm chí phân cấp với hỗ trợ cặp tham số hoặc khóa-giá trị).
mxmader
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.