Jak mogę zarządzać setkami BMC IPMI?

30

Mam ponad 200 komputerów, które mogą świadczyć usługi IPMI . Serwery są produkowane przez kilka różnych firm (SuperMicro, Dell itp.), A istnieje 6-7 modeli BMC od około 5 różnych dostawców, a każdy model ma swoje osobliwości.

Do tej pory konfigurowaliśmy BMC za pomocą kombinacji DHCP i ręcznie konfigurując każdy BMC. Ręczna konfiguracja może być wykonana przy użyciu rozruchowego dysku CD-ROM, konfiguracji z systemu BIOS (jeśli jest obsługiwany), z systemu operacyjnego hosta za pomocą narzędzia takiego jak ipmitool , freeipmi itp. Lub zdalnie za pomocą ipmitool, jeśli możemy ustalić adres sieciowy urządzenie.

Ta ręczna konfiguracja jest jednak dość nużąca. W niektórych przypadkach chcemy zmienić ustawienie globalnie na wszystkich BMC, co wymaga, aby administrator uruchomił polecenie na dziesiątki skrzynek. Ponieważ BMC są dostarczane przez różnych dostawców, a każdy model BMC może mieć własne osobliwości, to samo polecenie nie zawsze działa na wszystkich BMC.

Czy są jakieś narzędzia, które pozwalają mi masowo konfigurować BMC na dziesiątkach pudeł? Powiedz, że chcę zapytać o parametr na dziesiątkach różnych BMC lub zmienić hasło, wyłączyć dostęp HTTP do interfejsu WebUI lub wyłączyć niesławną dziurę w zabezpieczeniach bez szyfru .

Punkty bonusowe za dowolne narzędzie, które pozwoliłoby mi zaktualizować oprogramowanie układowe BMC, co jest niezbędne do ograniczenia kilku luk w zabezpieczeniach

Stefan Lasiewski
źródło
3
To z pewnością wydaje się czymś, co możesz zrobić, jeśli marionetkowo / kolektywnie. Używasz faktora , być może z pewnymi niestandardowymi faktami, aby wykryć rodzaj posiadanego urządzenia, a następnie konfigurujesz rzeczy za pomocą marionetki lub wypychając polecenia za pomocą mcollective.
Zoredache,
Możesz także rzucić okiem na xcat . Nie jest tak zaawansowany jak marionetka, jeśli chodzi o zarządzanie konfiguracją, put ma zintegrowaną rozproszoną powłokę, która może działać na grupach i ściśle integruje się z IPMI.
Izaak
Puppet Razor może być również rozwiązaniem, chociaż jeszcze tego nie analizowałem: vdatacloud.com/blogs/2012/05/23/...
Stefan Lasiewski
Jestem w Puppetconf i właśnie rozmawiałem z kierownikiem projektu Mcollective (inaczej znany jako Puppet Enterprise Orchestration). Of Mcollective zarządza twoimi węzłami (na poziomie systemu operacyjnego), a następnie uruchomienie tego na poziomie IPMI wydaje się dość dalekie od tego, do czego został zaprojektowany Mcollective. Ale to prawdopodobnie możliwe.
Stefan Lasiewski

Odpowiedzi:

16

Prawdopodobnie skorzystałbym z Ansible . Jest to bardzo prosty silnik do zarządzania / zarządzania konfiguracją, który jest o wiele łatwiejszy do rozpoczęcia niż Puppet (Puppet był moim głównym wyborem, ale nie zawsze teraz, odkrywszy Ansible).

Zaletą Ansible jest to, że komunikuje się bezpośrednio przez SSH, dzięki czemu można zacząć korzystać z istniejących poświadczeń SSH i przepływu pracy.

Jeśli obecnie konfigurujesz BMC za pomocą ipmitool, możesz zrobić coś takiego:

Zdefiniowanie pliku Hosts - Mówi ansibl które hosty w BMC grupy (w tym przypadku) i które do uruchomienia na rzeczy.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

I tak dalej ... Możesz również używać nazw hostów w tym pliku, o ile można je rozwiązać.

Następnie utwórz „poradnik”, który jest zestawem poleceń uruchamianych na każdym hoście w grupie hostów. Chcesz mieć taki układ katalogów z góry na dół:

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

Poradnik ma role , które są małymi sekcjami konfiguracji, które można rozbić i użyć ponownie.

Więc stworzyłbym plik o nazwie bmc.yml(konfiguracja All Ansible jest w plikach YAML)

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

Następnie w środku roles/bmcconfig/tasks/main.ymlmożesz zacząć wyświetlać listę poleceń, które mają być uruchamiane na każdym hoście, aby komunikować się z ipmi.

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

Po uruchomieniu podręcznika z ansible-playbook -i hosts bmc.ymlpoleceniami wymienionymi tasks/main.ymldla każdej roli zostaną wykonane w kolejności odgórnej na każdym hoście znalezionym w grupie bmchostów whosts

group_vars/all jest interesującym plikiem, pozwala zdefiniować pary klucz-wartość zmiennych i wartości, które mogą być używane w twoich podręcznikach.

więc możesz zdefiniować coś takiego

ipmitool_password: $512315Adb

w group_vars/allwyniku czego możesz mieć coś takiego:

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

w podręczniku.

Możesz znaleźć znacznie więcej informacji na temat korzystania z „modułów” - składników Ansible, które pozwalają ci robić różne rzeczy, jak pisać własne: D itd. Na stronach dokumentacji Ansible .

Tom O'Connor
źródło
12

Napisałem małe narzędzie pythonowe do uruchamiania poleceń na naszych 1000 maszynach (i ich BMC, Drac, ILO i IMM)

To, co zrobiłem, to napisanie struktury python o nazwie vsc-manage, w której mogę uruchamiać polecenia, które są albo wysyłane na serwer, albo do bmc, a następnie konfigurować, jaki typ maszyny potrzebuje jakiego polecenia.

Mam kilka klas, które łączą kombinację tych poleceń,

Tak więc dla maszyn z imm będzie ssh do imm i uruchomił się power off(w sposób oczekiwany przez skrypt)

W przypadku naszych podwozi typu imb będzie to działało na podwoziu

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

W przypadku niektórych drellów firmy Dell uruchomi to w systemie operacyjnym (węzła głównego)

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

W przypadku naszych nowszych systemów HP, które wykonują ipmi (i widzę coraz więcej w tych dniach), uruchomi to na urządzeniu głównym:

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

lub nowsze systemy Dell potrzeba ipmitool -I open, może trzeba grać z protokołem kawałka.

Dla ustawień nie zawartych w standardzie ipmi zaimplementowałem niektóre rzeczy z DMTF SMASH CLP , np. Włączenie diody lokalizatora:

start /system1/led1

Wszystko to w narzędziu wiersza poleceń, które można uruchomić z naszych laptopów, które połączy się z właściwym węzłem głównym, uruchom właściwe polecenie dla prawego węzła i zwróci dane wyjściowe, z dodatkową listą błędów, jeśli takie istnieją (na podstawie wyjście na stderr i / lub kod wyjścia)

Okazało się to bardzo przydatne, a dodanie obsługi nowej klasy sprzętu jest teraz stosunkowo łatwe (dzięki temu, że większość dostawców w pełni obsługuje teraz ipmi i DMTFSMASHCLP)

Nie nadaje się to do początkowej konfiguracji (potrzebuje bmc, aby mieć unikalny adres IP i poprawną bramę, ale tego właśnie nasi dostawcy muszą nam dostarczyć przy dostawie), ale może zrobić prawie wszystko inne (również uruchamiać dowolne polecenia na hoście działającym System i automatially harmonogram przestojów w icinga / Nagios po ponownym uruchomieniu węzła i / lub uznać 1000 hostów i usług w icinga / Nagios na raz)

Aktualizacja oprogramowania BMC i dodanie obsługi naszych przełączników to nierozwiązane problemy, które są planowane.

AKTUALIZACJA

Ponieważ przynajmniej niektórzy ludzie wydawali się zainteresowani, podarowałem mu dzisiaj ostatnią polską wersję i otworzyłem ją na https://github.com/hpcugent/vsc-manage

Chociaż jest to bardzo ukierunkowane na nasz własny przepływ pracy (quattor i / lub pbs), mam nadzieję, że przynajmniej może być interesujące.

Jens Timmerman
źródło
Dzięki za to! Czy jest jakaś przewaga, że ​​twoja praca ma przewagę nad uznanymi rozwiązaniami, takimi jak Ansible?
MikeyB
Nigdy wcześniej nie słyszałem od Ansible, na pewno się temu przyjrzę.
Jens Timmerman
O ile mi wiadomo, Ansible nie ma jeszcze obsługi impi i DMTF SMASH.
Jens Timmerman
To interesujące, Jens. Dziękujemy za udostępnienie tego projektu. Ansible + vsc-manage zaczyna wyglądać naprawdę przydatnie w masowym postępowaniu z serwerami.
ILIV,
ILIV, myślę, że byłoby miło, gdybym miał trochę czasu, aby dodać wszystkie funkcje vsc-manage do ansible ;-)
Jens Timmerman
3

Dziwi mnie, że nikt nie wspomniał o MAAS ( http://maas.io/ ), który robi dokładnie to, czego szukasz. Może automatycznie konfigurować BMC i zarządzać nimi, a ponadto wdrożyć dowolny system operacyjny na węzłach zarejestrowanych w systemie. Ma internetowy interfejs użytkownika i interfejs API RESTful i jest przeznaczony do integracji z dowolnym systemem automatyzacji.

Kiedy maszyna PXE uruchamia się po raz pierwszy, MAAS używa wbudowanego IPMI do automatycznego konfigurowania poświadczeń. Od tego momentu możesz łatwo zdalnie uruchamiać i wyłączać maszynę.

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją rodzajów zasilania MAAS BMC, która pokazuje, jak ręcznie skonfigurować BMC dla dowolnego węzła zarejestrowanego w MAAS.

kiko
źródło
Dobra rada, dzięki. Wygląda całkiem fajnie. Wygląda na to, że system MAAS Ubuntu zapewnia pewne zarządzanie, zarządzanie cyklem życia i wygląda na to, że ma przydatne narzędzia do zarządzania IPMI. Używamy już Foremana, który już to robi. Jednak zarządzanie IPMI Foremana jest dość słabe i nie zapewnia grupowania ani struktury organizacyjnej, ale przynajmniej ma coś. Używamy go w połączeniu z garstką innych narzędzi do zarządzania całym zestawem i caboodle.
Stefan Lasiewski
Zauważ, że Foreman ma wsparcie dla Organizacji i Lokalizacji (patrz projects.theforeman.org/projects/foreman/wiki/… ) od wersji 1.1. Możesz użyć tych funkcji (wraz z grupami hostów), aby zapewnić dość szczegółowe (nawet hierarchiczne z obsługą parametrów lub par klucz-wartość) kolekcje hostów.
mxmader,