Yüzlerce IPMI BMC'sini nasıl yönetebilirim?


30

IPMI hizmetleri sağlayabilen 200'den fazla bilgisayarım var . Sunucular birkaç farklı şirket (SuperMicro, Dell, vb.) Tarafından üretilmiştir ve yaklaşık 5 farklı satıcının 6-7 BMC modeli vardır ve her modelin kendine özgü özellikleri vardır.

Şimdiye kadar BMC'leri bir DHCP kombinasyonu kullanarak ve her bir BMC'yi manuel olarak yapılandırarak yapılandırdık. Manuel yapılandırma, önyüklenebilir bir CD-ROM, BIOS'tan (eğer destekleniyorsa), ana bilgisayar işletim sisteminden ipmitool , freeipmi , vb. Gibi bir yardımcı programla veya uzaktan ağın ağ adresini belirleyebilirsek uzaktan kullanarak ipmitool kullanarak yapılabilir. cihaz.

Ancak, bu el ile yapılandırma oldukça sıkıcı. Bazı durumlarda, tüm BMC'lerde genel olarak bir ayarı değiştirmek istiyoruz; bu da yöneticinin onlarca kutuya karşı bir komut çalıştırmasını gerektirir. BMC'ler farklı satıcılar tarafından sağlandığı ve her BMC modeli kendi kendine özgü özelliklerine sahip olabileceğinden, aynı komut her zaman BMC'lerde çalışmaz.

BMC'leri düzinelerce kutuda toplu olarak yapılandırmamı sağlayan herhangi bir yardımcı program var mı? Düzinelerce farklı BMC üzerinde bir parametre sorgulamak istediğimi ya da şifreyi değiştirdiğimi, WebUI'ye HTTP erişimini devre dışı bıraktığımı veya rezil şifreleme sıfır güvenlik boşluğunu devre dışı bırakmak istediğimi söyleyin .

Çeşitli güvenlik açıklarını azaltmak için gerekli olan BMC ürün yazılımını güncellememe izin verecek herhangi bir yardımcı program için bonus puanları


3
Kukla / mcollective yaparsan bu yapabileceğin bir şey gibi görünüyor. Ne tür bir cihaza sahip olduğunuzu saptamak için bazı özel gerçekler olan Facter'i kullanırsınız , sonra kukla kullanarak veya mcollective komutlarını kullanarak şeyleri yapılandırırsınız.
Zoredache

Ayrıca, xcat’e de bakmak isteyebilirsiniz . Konfigürasyon yönetimi söz konusu olduğunda, kukla kadar sofistike değil, gruplar üzerinde çalışabilen ve IPMI ile sıkı bir şekilde bütünleşen entegre dağıtılmış bir kabuğa sahip.
Isaac,

Kukla Jilet de henüz bir çözümlemediysem de bir çözüm olabilir: vdatacloud.com/blogs/2012/05/23/…
Stefan Lasiewski

Puppetconf'tayım ve az önce Mcollective'in proje yöneticisi ile konuştum (Aksi halde Kukla İşletme Orkestrasyonu olarak bilinir). Mcollective, düğümlerinizi (işletim sistemi düzeyinde) yönetir, sonra bunun IPMI seviyesinde çalışmasını sağlamak, Mcollective'in tasarlandığı alanın çok dışında görünüyor. Ama muhtemelen mümkün.
Stefan Lasiewski

Yanıtlar:


16

Muhtemelen Ansible'ı kullanırdım . Kukla'dan başlamak için çok daha basit olan çok basit bir konfigürasyon yönetimi / düzenleme motorudur (Kukla bunun için benim tercihimdeydi, ama her zaman şimdi değil, Ansible'ı keşfettim).

Buradaki Ansible'ın avantajı, doğrudan SSH üzerinden iletişim kurmasıdır, böylece yalnızca mevcut SSH kimlik bilgilerinizi ve iş akışınızı kullanmaya başlayabilirsiniz.

Şu anda BMC'lerinizi ipmitool ile yapılandırıyorsanız, aşağıdaki gibi bir şey yapabilirsiniz:

Bir Hosts dosyası tanımla - Bu, Ansible'a hangi ev sahiplerinin bmc grubunda olduğunu (bu durumda) ve hangilerinin üzerinde çalışacağını bildirir .

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

Ve bunun gibi ... Bu dosyadaki host adlarını da çözülebilir oldukları sürece kullanabilirsiniz.

Ardından, bir ana bilgisayar grubundaki her ana bilgisayarda çalıştırılacak komutlar kümesi olan bir "oynatma kitabı" oluşturun. Bu tür yukarıdan aşağıya dizin düzenine sahip olmak istiyorsunuz:

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

Bir oyun kitabında, parçalayıp yeniden kullanabileceğiniz küçük yapılandırma bölümleri olan Roller vardır.

Böylece bir dosya oluşturacağım bmc.yml(Tüm Ansible konfigürasyonu YAML dosyalarında)

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

Daha sonra roles/bmcconfig/tasks/main.ymlipmi ile iletişim kurmak için her bir ana bilgisayarda çalıştırılacak olan komutları listelemeye başlayabilirsiniz.

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

Oynatma kitabını çalıştırdığınızda, her rol için ansible-playbook -i hosts bmc.ymllistelenen komutlar, içinde tasks/main.ymlana bilgisayar bmcgrubunda bulunan her ana bilgisayarda yukarıdan aşağıya sırayla yürütülecektir.hosts

group_vars/all ilginç bir dosya olup, oynatma kitaplarınızda kullanılabilecek anahtar-değer değişkenleri ve değerleri tanımlamanıza olanak sağlar.

Böylece bir şey tanımlamak

ipmitool_password: $512315Adb

Gözlerinde farklı group_vars/allve sonuç olarak, gibi bir şey olması mümkün olurdu:

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

oyun kitabında.

"Modül" lerin nasıl kullanılacağı hakkında daha fazla bilgi edinebilirsiniz - Ansible'ın bir şeyler yapmanıza izin veren bileşenleri, kendi yazınızı yazma: D, vb. Ansible Dokümantasyon Sayfalarında .


12

1000 makinemizdeki komutları çalıştırmak için küçük bir python aracı yazdım (ve onların bmc'leri, drac'ları, ilo'ları ve imm'leri)

Yaptığım şey, sunucuya veya bmc'ye gönderilen komutları çalıştırabileceğim ve daha sonra hangi makinenin hangi komutu gerektirdiğini yapılandırabileceğim, vsc-manage adlı bir python-framework yazmaktı .

Bu emirlerin bir karışımını birleştiren birkaç sınıfım var.

Bu yüzden imm içeren makineler için imm ssh ve çalışacaktır power off(bir script-script içinde)

Bizim için imb bıçak şasi 'şasi üzerinde bu çalışacaktır s

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

Bazı dell drac'lar için bunu os (master düğümün) üzerinde çalıştırır.

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

İpmi yapan daha yeni hp sistemlerimiz için (ve bu günlerde giderek daha fazlasını görüyorum) bunu master'da çalıştıracak:

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

ya da daha yeni dell sistemlerinin ihtiyacı ipmitool -I openolan protokolü biraz oynamanız gerekebilir.

İpmi standardına dahil olmayan ayarlar için DMTF SMASH CLP'den bazı şeyleri uyguladım , örneğin konumlandırmayı açtı:

start /system1/led1

Bütün bunlar, dizüstü bilgisayarlarımızdan çalıştırılabilecek, sağ ana düğüme bağlanacak, sağ düğüm için doğru komutu çalıştıracak ve varsa, ek bir hata listesiyle çıktısını döndürecek bir komut satırı aracında. stderr ve / veya exitcode üzerinde çıktı)

Bunun çok kullanışlı olduğu kanıtlanmıştır ve yeni bir donanım sınıfı için destek eklemek artık oldukça kolaydır (Çoğu tedarikçinin şimdi ipmi ve DMTFSMASHCLP'yi tam olarak desteklemesi sayesinde)

Bu ilk yapılandırma için uygun değildir (bmc'nin benzersiz bir ip ve doğru ağ geçidine sahip olması gerekir, ancak tedarikçilerimizin teslimat sırasında bize sağlaması gereken şey budur) ancak hemen hemen başka bir şey yapabilir (ayrıca ana bilgisayar işletiminde keyfi komutlar çalıştırabilir) sistem ve otomatik olarak bir düğümü yeniden başlattığınızda icinga / nagios'ta kesinti zamanlaması yapın ve / veya bir kerede icinga / nagios'taki 1000 ana bilgisayarı ve hizmeti onaylayın)

Bmc belleniminin güncellenmesi ve anahtarlarımız için destek eklenmesi planlanan önemli konulardır.

GÜNCELLEŞTİRME

En azından bazı insanlar ilgimi çekmiş göründüğü için, bugün son bir cila yaptım ve bunu https://github.com/hpcugent/vsc-manage adresinde açtı.

Bu, kendi iş akışımıza (quattor ve / veya pbs) yönelik olarak çok fazla hedeflenmiş olmasına rağmen, en azından ilginç olabileceğini umuyorum.


Bunun için teşekkürler! İşinizin Ansible gibi yerleşik çözümler üzerinde üstünlüğü var mı?
MikeyB

Daha önce Ansible'dan hiç haber almamıştım, Will kesinlikle buna bakıyordu.
Jens Timmerman,

Gördüğüm kadarıyla, Ansible'ın henüz impi ve DMTF SMASH için desteği yok.
Jens Timmerman,

Bu ilginç, Jens. Bu projeyi paylaştığınız için teşekkür ederiz. Ansible + vsc-manage, toplu halde sunucularla çalışırken gerçekten yararlı görünmeye başlar.
ILIV

ILIV, vsc-manage 'in tüm özelliklerini ansible' a eklemek için biraz zamanım olsaydı iyi olacağını düşünüyorum ;-)
Jens Timmerman

3

Tam olarak aradığınızı yapan hiç kimsenin MAAS'tan ( http://maas.io/ ) bahsetmediğinden şaşırdım . BMC'leri otomatik olarak yapılandırabilir ve yönetebilir ve ayrıca sisteme girdiğiniz düğümlere herhangi bir işletim sistemi dağıtabilir. Bir Web Kullanıcı Arayüzüne ve RESTful API'ye sahiptir ve herhangi bir otomasyon sistemiyle entegre olacak şekilde tasarlanmıştır.

Bir makine PXE ilk kez önyüklendiğinde, MAAS sizin için kimlik bilgilerini otomatik olarak ayarlamak için bant içi IPMI kullanır. Bu noktadan itibaren, bir makineyi kolayca uzaktan açıp kapatabilirsiniz.

Daha fazla ayrıntı için, MAAS'ta listelenen herhangi bir düğüm için bir BMC'nin manuel olarak nasıl yapılandırıldığını gösteren MAAS BMC Güç Türleri belgelerine bakın .


İyi bir ipucu, teşekkürler. Çok havalı gözüküyor. Ubuntu’nun MAAS’ı iyi bir provizyon, yaşam döngüsü yönetimi ve bazı IPMI yönetim araçlarına sahip gibi görünüyor. Foreman'ı zaten kullanıyoruz, bu zaten bir kısmını yapıyor. Bununla birlikte, Foreman'ın IPMI yönetimi oldukça zayıftır ve gruplama veya organizasyonel bir yapı sağlamaz, ama en azından bir şeye sahiptir. Tüm kiti ve kabini tümüyle idare etmek için bir avuç başka alet kombinasyonu ile kullanıyoruz.
Stefan Lasiewski

Foreman'ın Örgüt ve Yerlere (v1.1 itibariyle bkz. Projects.theforeman.org/projects/foreman/wiki/… ) destek verdiğini unutmayın. Bu özellikleri (Hostgroups ile birlikte), makul düzeyde granüler (parametre veya anahtar-değer çifti desteği ile hiyerarşik) koleksiyonları toplamak için kullanabilirsiniz.
mxmader
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.