수백 개의 IPMI BMC를 어떻게 관리 할 수 ​​있습니까?


30

IPMI 서비스를 제공 할 수있는 200 대가 넘는 컴퓨터가 있습니다 . 서버는 여러 다른 회사 (SuperMicro, Dell 등)에서 제조되며 약 5 개의 다른 공급 업체의 6-7 BMC 모델이 있으며 각 모델에는 고유 한 특성이 있습니다.

지금까지 DHCP 조합을 사용하고 각 BMC를 수동으로 구성하여 BMC를 구성했습니다. 수동 구성은 부팅 가능한 CD-ROM, BIOS 구성 (지원되는 경우), ipmitool , freeipmi 등 의 유틸리티를 사용하는 호스트 운영 체제 또는 ipmitool을 사용하여 원격으로 ipmitool을 사용하여 원격으로 구성 할 수 있습니다. 장치.

그러나이 수동 구성은 다소 지루합니다. 경우에 따라 모든 BMC에서 전체적으로 설정을 변경하려는 경우 관리자가 수십 개의 상자에 대해 명령을 실행해야합니다. BMC는 서로 다른 공급 업체에서 제공하며 각 BMC 모델에는 고유 한 특성이있을 수 있으므로 모든 BMC에서 동일한 명령이 항상 작동하는 것은 아닙니다.

수십 개의 박스에 BMC를 대량 구성 할 수있는 유틸리티가 있습니까? 수십 개의 서로 다른 BMC에서 매개 변수를 쿼리하거나 암호를 변경하거나 WebUI에 대한 HTTP 액세스를 비활성화하거나 악명 높은 암호 0 보안 취약점을 비활성화하고 싶다고 가정 해보십시오 .

여러 가지 보안 취약점 을 완화하는 데 필요한 BMC 펌웨어를 업데이트 할 수있는 유틸리티의 보너스 포인트


3
꼭두각시 / 수집가라면 할 수있는 것 같습니다. 어떤 사용자 정의 사실과 함께 facter를 사용 하여 어떤 유형의 장치가 있는지 감지 한 다음 꼭두각시를 사용하거나 mcollective로 명령을 푸시하여 항목을 구성합니다.
Zoredache

xcat를 살펴볼 수도 있습니다 . 구성 관리 측면에서 꼭두각시만큼 정교하지는 않지만 put은 그룹에서 작동 할 수있는 분산 형 셸을 통합하고 IPMI와 긴밀하게 통합됩니다.
Isaac

Puppet Razor도 해결책이 될 수 있지만, 아직 살펴 보지 않았습니다 : vdatacloud.com/blogs/2012/05/23/…
Stefan Lasiewski

저는 Puppetconf에 있으며 Mcollective (Puppet Enterprise Orchestration이라고도 함)의 프로젝트 관리자와 대화했습니다. Mcollective 중 노드를 운영 체제 (OS 수준)에서 관리 한 다음이를 IPMI 수준에서 작동하게하는 것은 Mcollective가 의도 한 것과는 상당히 다른 것 같습니다. 그러나 아마도 가능할 것입니다.
Stefan Lasiewski

답변:


16

아마 Ansible을 사용했을 것입니다 . Puppet보다 시작하기가 매우 간단한 매우 간단한 구성 관리 / 오케스트레이션 엔진입니다.

Ansible의 장점은 SSH를 통해 직접 통신하기 때문에 기존 SSH 자격 증명 및 워크 플로 만 사용하여 시작할 수 있다는 것입니다.

현재 ipmitool을 사용하여 BMC를 구성하는 경우 다음과 같은 작업을 수행 할 수 있습니다.

호스트 파일 정의-이것은 Ansible에게 bmc 그룹 (이 경우)에 어떤 호스트가 있고 어떤 것을 실행할 것인지를 알려줍니다 .

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

그리고 등등 ... 당신은 또한 그 파일을 분석 할 수있는 한, 그 파일에서 호스트 이름을 사용할 수 있습니다.

그런 다음 호스트 그룹의 각 호스트에서 실행할 명령 집합 인 "플레이 북"을 만듭니다. 이런 종류의 하향식 디렉토리 레이아웃을 원합니다.

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

플레이 북에는 역할 이 있습니다.이 역할 은 구성 및 재사용이 가능한 구성 섹션이 거의 없습니다.

그래서 bmc.yml(모든 Ansible 구성은 YAML 파일에 있습니다) 라는 파일을 만들 것입니다.

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

그런 다음 내부 roles/bmcconfig/tasks/main.yml에서 ipmi와 통신하기 위해 각 호스트에서 실행될 명령을 나열 할 수 있습니다.

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

플레이 북을 실행하면 각 역할 ansible-playbook -i hosts bmc.ymltasks/main.yml대해 나열된 명령 을 사용하여 호스트 bmc그룹에 있는 각 호스트에서 하향식으로 실행 됩니다.hosts

group_vars/all 흥미로운 파일로, 플레이 북에서 사용할 수있는 변수와 값의 키-값 쌍을 정의 할 수 있습니다.

그래서 당신은 같은 것을 정의 할 수 있습니다

ipmitool_password: $512315Adb

당신 group_vars/all과 그 결과로 다음과 같은 것을 가질 수 있습니다.

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

플레이 북에서.

Ansible Documentation Pages 에서 "모듈"을 사용하는 방법-작업을 수행 할 수있는 Ansible의 구성 요소, 자신의 : D 작성 방법 등에 대한 자세한 정보를 찾을 수 있습니다 .


12

1000 대의 컴퓨터 (및 bmc, drac, ilo 및 imm)에서 명령을 실행하는 작은 파이썬 도구를 작성했습니다.

내가 한 것은 서버 또는 bmc로 전송되는 명령을 실행할 있는 vsc-manage 라는 python-framework을 작성 한 다음 어떤 유형의 컴퓨터에 어떤 명령이 필요한지 구성했습니다.

이 명령을 혼합하여 사용하는 몇 가지 클래스가 있습니다.

따라서 imm 이있는 머신의 경우 imm 으로 ssh하고 실행 power off(스크립트 예상 방식으로) 실행합니다.

우리의 경우 IMB 블레이드 섀시 '가 섀시에이 실행됩니다이야

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

일부 dell drac의 경우 os (마스터 노드)에서이를 실행합니다.

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

ipmi 를 수행하는 최신 hp 시스템의 경우 (그리고 요즘 점점 더 많이 볼 수 있음) 마스터에서이를 실행합니다.

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

또는 최신 dell 시스템이 필요한 ipmitool -I open경우 프로토콜을 약간 사용해야합니다.

ipmi 표준에 포함되지 않은 설정의 경우 로케이터를 켜는 등 DMTF SMASH CLP 에서 몇 가지를 구현 했습니다.

start /system1/led1

이 모든 것은 랩톱에서 실행할 수있는 명령 줄 도구로, 올바른 마스터 노드에 연결하고 올바른 노드에 대한 올바른 명령을 실행하고 추가 오류 목록이 있으면 출력을 반환합니다 ( stderr 및 / 또는 종료 코드에서 출력)

이 기능은 매우 유용하며 새로운 하드웨어 클래스에 대한 지원을 추가하는 것이 상대적으로 쉬워졌습니다 (대부분의 공급 업체가 ipmi 및 DMTFSMASHCLP를 완전히 지원한다는 사실 덕분에)

초기 구성에는 적합하지 않습니다 (bmc에는 고유 한 IP 및 올바른 게이트웨이가 필요하지만 공급 업체는 제공시 제공해야하는 것임).하지만 거의 모든 작업을 수행 할 수 있습니다 (호스트 운영 체제에서 임의 명령 실행) 노드를 재부팅 할 때 icinga / nagios 에서 시스템 중단 시간을 자동으로 예약 하고 icinga / nagios에서 한 번에 1000 개의 호스트 및 서비스를 확인합니다.

bmc 펌웨어 업데이트 및 스위치 지원 추가는 계획된 미해결 문제입니다.

최신 정보

적어도 일부 사람들이 관심이있는 것처럼 보였으므로 오늘 마지막 광택을 냈으며 https://github.com/hpcugent/vsc-manage 에서 공개했습니다.

이것이 우리 자신의 워크 플로우 (quattor 및 / 또는 pbs)를 목표로 삼고 있지만 적어도 재미있을 수 있기를 바랍니다.


감사합니다! Ansible과 같은 기존 솔루션보다 작업에 유리한 점이 있습니까?
MikeyB

나는 전에 Ansible로부터 들어 본 적이 없었습니다.
Jens Timmerman

내가 아는 한 Ansible은 아직 impi와 DMTF SMASH를 지원하지 않습니다.
Jens Timmerman

재미 있어요, 젠스 이 프로젝트를 공유해 주셔서 감사합니다. Ansible + vsc-manage는 서버 전체를 처리하는 데 실제로 유용하게 보이기 시작합니다.
ILIV 2016 년

ILIV, vsc-manage의 모든 기능을 사용할 수있는 시간이 있다면 좋겠다고 생각합니다. ;-)
Jens Timmerman

3

아무도 당신이 찾고있는 것을 정확하게하는 MAAS ( http://maas.io/ )를 언급하지 않은 것에 놀랐습니다 . BMC를 자동 구성 및 관리 할 수 ​​있으며 시스템에 등록한 노드에 모든 OS를 배포 할 수 있습니다. 웹 UI와 RESTful API가 있으며 모든 자동화 시스템과 통합되도록 설계되었습니다.

머신 PXE가 처음 부팅되면 MAAS는 대역 내 IPMI를 사용하여 자격 증명을 자동으로 설정합니다. 이 시점부터 시스템을 원격으로 쉽게 부팅하고 종료 할 수 있습니다.

자세한 내용 은 MAAS에 등록 된 노드에 대해 BMC를 수동으로 구성하는 방법을 보여주는 MAAS BMC 전원 유형 설명서 를 확인 하십시오 .


좋은 팁, 감사합니다. 꽤 멋지다. Ubuntu의 MAAS는 훌륭한 프로비저닝, 수명주기 관리를 수행하는 것으로 보이며 유용한 IPMI 관리 도구가있는 것처럼 보입니다. 우리는 이미 Foreman을 사용하고 있습니다. 그러나 Foreman의 IPMI 관리는 상당히 약하고 그룹화 또는 조직 구조를 제공하지 않지만 최소한 무언가가 있습니다. 우리는 전체 툴킷과 캐비넷을 관리하기 위해 소수의 다른 도구와 함께 사용합니다.
Stefan Lasiewski

Foreman은 v1.1부터 Organizations and Locations ( projects.theforeman.org/projects/foreman/wiki/… 참조 )를 지원합니다. 이러한 기능 (호스트 그룹과 함께)을 사용하면 상당히 세분화 된 (매개 변수 또는 키-값 쌍 지원으로 계층 적이라도) ​​호스트 모음을 제공 할 수 있습니다.
mxmader
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.