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


Sağlayabilir 200'den fazla bilgisayar var IPMI Hizmetler. Sunucular birkaç farklı şirket tarafından üretilmiştir (SuperMicro, Dell, vb.) Ve yaklaşık 5 farklı satıcıdan 6-7 BMC modeli vardır ve her modelin kendine özgü özellikleri vardır.

Şimdiye kadar, BMC'leri bir DHCP kombinasyonu kullanarak ve her BMC'yi manuel olarak yapılandırarak yapılandırdık. Manuel yapılandırma, önyüklenebilir bir CD-ROM, BIOS'dan yapılandırma (Destekleniyorsa), ana bilgisayar işletim sisteminden ipmitool, freeipmiCihazın ağ adresini belirleyebilirsek, vb. veya ipmitool kullanarak uzaktan.

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

BMC'leri düzinelerce kutu üzerinde toplu olarak yapılandırmamı sağlayan herhangi bir yardımcı program var mı? Düzinelerce farklı BMC'de bir parametre sorgulamak veya şifreyi değiştirmek, WebUI'ye HTTP erişimini devre dışı bırakmak veya devre dışı bırakmak istediğinizi varsayalım. rezil şifre sıfır güvenlik deliği.

Azaltmak için gerekli olan BMC ürün bilgisini güncellememi sağlayacak herhangi bir program için bonus puanları çeşitli güvenlik açıkları


30
2017-08-07 18:28


Menşei


Bu emin sen kukla / mcollective eğer yapabileceğiniz bir şey gibi görünüyor. Kullan facterMuhtemelen, hangi tür cihazlara sahip olduğunuzu tespit etmek için bazı özel gerçekler ile kukla kullanarak ya da komutları mcollective ile iterek yapılandırırsınız. - Zoredache
Ayrıca bir göz atmak isteyebilirsiniz xcat. Konfigürasyon yönetimi söz konusu olduğunda kukla kadar sofistike değil, koymak, gruplarda çalışabilen ve IPMI ile sıkı bir şekilde bütünleşen dağıtılmış bir kabuk. - Isaac
Henüz bakmamış olsam da, Kukla Jilet de bir çözüm olabilir: vdatacloud.com/blogs/2012/05/23/... - Stefan Lasiewski
Ben Puppetconf'tayım ve sadece Mcollective için proje müdürü ile konuştum (Aksi halde Kukla Kurumsal Orkestrasyon olarak bilinir). Mcollective, düğümlerinizi (OS seviyesinde) yönetir, ardından bunu IPMI seviyesinde çalışmak için almak, Mcollective'in tasarlandığı şeyin dışında oldukça uzak görünüyor. Ama muhtemelen mümkün. - Stefan Lasiewski


Cevaplar:


Muhtemelen kullanırdım yanıtlayıcı '. Başlamak için çok daha basit olan çok basit bir konfigürasyon yönetimi / orkestrasyon motoru Kukla'dan (Kukla, bunun için benim tercihim olsa da, her zaman değil, Ansible'ı keşfettim).

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

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

Bir Hosts dosyası tanımla - Bu, hangi hostların bmc grubu (bu durumda) ve üzerinde çalışılacak olan.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

Ve bunun gibi ... Ayrıca, çözülebilir oldukları sürece bu dosyadaki ana bilgisayar adlarını da kullanabilirsiniz.

Ardından, bir ana makine grubunda her bir ana bilgisayarda çalışacak komut kümesi olan bir "oynatma kitabı" oluşturun. Bu yukarıdan aşağı dizin düzenine sahip olmak istersiniz:

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

Bir oyun kitabı var RollerAyrılıp yıkabileceğiniz ve yeniden yapılandırabileceğiniz küçük yapılandırma bölümleri.

Ben de bir dosya oluşturdum. bmc.yml (Tüm Ansible yapılandırması YAML dosyalarındadır)

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

Sonra içeride roles/bmcconfig/tasks/main.yml ipmi ile iletişim kurmak için her bir ana bilgisayarda çalıştırılacak komutları listelemeye başlayabilirsiniz.

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

Playbook'u çalıştırdığınızda ansible-playbook -i hosts bmc.yml listelenen komutlar tasks/main.yml Her rol için, her bir ana bilgisayarda bulunan aşağı-yukarı sırada yürütülür. bmc ana bilgisayar grubu hosts

group_vars/all ilginç bir dosyadır, oyun kitaplarınızda kullanılabilecek anahtar / değer çiftleri ve değer çiftlerini tanımlamanızı sağlar.

böylece böyle bir şey tanımlayabilirsin

ipmitool_password: $512315Adb

senin içinde group_vars/all ve sonuç olarak, şöyle bir şey elde edebileceksiniz:

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

oyun kitabında.

"Modülleri" nasıl kullanacağınız hakkında daha fazla bilgi edinebilirsiniz - Ansible bileşenleri size, sizin nasıl yazılacağınıza izin veren bileşenleri: D, vb. Ansible Belgeleme Sayfaları.


16
2017-08-08 08:29





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

Yaptığım şey adında bir python-framework yazıyordu vsc-yönetmek Burada sunucuya veya bmc'ye gönderilen komutları çalıştırabilir ve daha sonra hangi makinenin hangi komutu gerektirdiğine karar verdim.

Bu komutların bir karışımını birleştiren birkaç dersim var.

Yani, makineler imm ölüme ssh edecek ve koşacak power off (Beklenen bir senaryoda)

Bizim için imb blade şasibu şasi üzerinde çalışacak

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

Bazı Dell Dracs Bunu bir ana düğümde (os) çalıştıracak

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

Daha yeni hp sistemlerimiz için IPMI (ve bugünlerde gittikçe daha çok görüyorum) bunu ustada yürütecek:

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

veya daha yeni dell sistemleri gerekir ipmitool -I openprotokol ile biraz oynamanız gerekebilir.

İpmi standardına dahil olmayan ayarlar için bazı şeyleri DMTF SMASH CLP, Örneğin. Konumlandırıcıyı açmak için:

start /system1/led1

Tüm bunlar, dizüstü bilgisayarlarımızdan çalıştırılabilen, doğru ana düğüme bağlanacak komut satırı aracında, doğru düğüm için doğru komutu çalıştırın ve çıktıyı, varsa ek bir hata listesiyle birlikte döndürün. stderr ve / veya exitcode çıkışı

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

Bu, başlangıç ​​yapılandırması için uygun değildir (benzersiz bir ip ve doğru ağ geçidine sahip olması için bmc'ye ihtiyaç duyar, ancak bu, satıcılarımızın teslimatta bize sağlaması gereken şeydir) ancak bunu yapabilir hemen hemen her şey (ayrıca, ana işletim sistemindeki keyfi komutları çalıştırır ve kesinti süresini otomatik olarak zamanlar. icinga / nagios Bir düğümü yeniden başlattığınızda ve / veya bir kerede icinga / nagios'ta 1000 ana bilgisayarı ve hizmeti kabul ettiğinizde)

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

GÜNCELLEŞTİRME

En azından bazı insanlar ilgilerini çekmiş gibi göründüğü için bugün ona bir son cila verdim ve bunu açık olarak https://github.com/hpcugent/vsc-manage

Bu, kendi iş akışımıza (quattor ve / veya pbs) doğru çok fazla hedeflenmişken, umarım en azından ilginç olabilir.


12
2017-08-09 10:47



Bunun için teşekkürler! Çalışmanızın Ansible gibi yerleşik çözümler üzerinde bir avantajı var mı? - MikeyB
Daha önce Ansible'dan hiç haber almadım, Kesinlikle ona bakacağım. - Jens Timmerman
Gördüğüm kadarıyla Ansible, impi ve DMTF SMASH için henüz destek görmedi. - Jens Timmerman
Bu ilginç, Jens. Bu projeyi paylaştığınız için teşekkür ederiz. Ansible + vsc-manage, sunuculara hitap etmekte gerçekten işe yaramaya başlar. - ILIV
ILIV, vsc-manage'in tüm özelliklerini ispiyonlamak için biraz zamanım olsaydı güzel olurdu diye düşünüyorum ;-) ;-) - Jens Timmerman


Şaşkınım, kimse MAAS'tan bahsetmedi (http://maas.io/), tam olarak aradığınız şeyi yapar. BMC'leri otomatik olarak yapılandırabilir ve yönetebilir, ayrıca sisteme dahil ettiğiniz düğümlere herhangi bir OS'yi dağıtabilirsiniz. Bir Web UI'sine ve RESTful API'ye sahiptir ve herhangi bir otomasyon sistemi ile entegre olacak şekilde tasarlanmıştır.

İlk kez bir makine PXE-boot'ları olduğunda, MAAS sizin için otomatik olarak kimlik bilgilerini ayarlamak için bant içi IPMI kullanır. Bu noktadan itibaren, kolayca bir makineyi uzaktan açıp kapatabilirsiniz.

Daha fazla bilgi için, kontrol edin MAAS BMC Güç Tipleri dokümantasyonu MAAS'a kayıtlı herhangi bir düğüm için BMC'yi manuel olarak nasıl yapılandıracağınızı gösterir.


3
2017-09-07 15:02



İyi bir ipucu, teşekkürler. Oldukça havalı görünüyor. Ubuntu'nun MAAS'ı, bazı güzel provizyon, yaşam döngüsü yönetimi yapmak gibi görünüyor ve bazı yararlı IPMI yönetim araçlarına sahip gibi görünüyor. Foreman'ı zaten kullanıyoruz, bu zaten bunlardan bazılarını yapıyor. Bununla birlikte, Foreman'ın IPMI yönetimi oldukça zayıftır ve gruplama veya organizasyonel bir yapı sağlamamaktadır, ancak en azından bir şeyleri vardır. Tüm kitin ve kabotajın tamamını yönetmek için bir avuç diğer araçların kombinasyonuyla kullanıyoruz. - Stefan Lasiewski
Foreman'ın Organizasyon ve Lokasyonları olduğunu unutmayın (bkz. projects.theforeman.org/projects/foreman/wiki/...v1.1'den itibaren destek. Bu özellikleri (Hostgroup'larla birlikte), ana makine koleksiyonlarını makul düzeyde (hatta parametre veya anahtar / değer çiftiyle destekli hiyerarşik) koleksiyonları sağlamak için kullanabilirsiniz. - mxmader