Bagaimana saya bisa mengelola ratusan BMC IPMI?


30

Saya memiliki lebih dari 200 komputer yang dapat menyediakan layanan IPMI . Server diproduksi oleh beberapa perusahaan yang berbeda (SuperMicro, Dell, dll.), Dan terdapat 6-7 model BMC dari sekitar 5 vendor yang berbeda, dan masing-masing model memiliki kekhasan tersendiri.

Sejauh ini kami telah mengkonfigurasi BMC dengan menggunakan kombinasi DHCP dan secara manual mengkonfigurasi masing-masing BMC. Konfigurasi manual mungkin dilakukan menggunakan CD-ROM bootable, konfigurasi dari BIOS (Jika didukung), dari sistem operasi host dengan utilitas seperti ipmitool , freeipmi , dll. Atau menggunakan ipmitool dari jarak jauh jika kita dapat menentukan alamat jaringan dari alat.

Namun, konfigurasi manual ini agak membosankan. Dalam beberapa kasus kami ingin mengubah pengaturan secara global pada semua BMC, yang mengharuskan administrator menjalankan perintah terhadap puluhan kotak. Karena BMC disediakan oleh vendor yang berbeda dan masing-masing model BMC mungkin memiliki keistimewaan sendiri, perintah yang sama tidak selalu berfungsi pada semua BMC.

Apakah ada utilitas yang memungkinkan saya untuk mengonfigurasi BMC secara massal di banyak kotak? Katakanlah saya ingin menanyakan parameter pada lusinan BMC yang berbeda, atau mengubah kata sandi, menonaktifkan akses HTTP ke WebUI atau menonaktifkan lubang keamanan nol sandi sandi yang terkenal itu .

Poin bonus untuk utilitas apa pun yang memungkinkan saya untuk memperbarui firmware BMC, yang diperlukan untuk mengurangi beberapa kerentanan keamanan


3
Ini sepertinya seperti sesuatu yang bisa kamu lakukan jika kamu bonekanya. Anda menggunakan facter , mungkin dengan beberapa fakta khusus untuk mendeteksi jenis perangkat yang Anda miliki, kemudian Anda mengonfigurasi berbagai hal menggunakan boneka, atau dengan mendorong perintah dengan mcollective.
Zoredache

Anda mungkin juga ingin melihat xcat . Ini tidak secanggih wayang ketika datang ke manajemen konfigurasi, put telah terintegrasi shell, yang dapat beroperasi pada kelompok, dan terintegrasi erat dengan IPMI.
Isaac

Puppet Razor mungkin bisa menjadi solusi juga, meskipun saya belum memeriksanya
Stefan Lasiewski

Saya di Puppetconf dan saya baru saja berbicara dengan manajer proyek untuk Mcollective (Atau dikenal sebagai Puppet Enterprise Orchestration). Mcollective mengelola node Anda (pada level OS), kemudian menjadikan ini berfungsi pada level IPMI tampaknya cukup jauh di luar dari yang dirancang Mcollective. Tapi itu mungkin saja.
Stefan Lasiewski

Jawaban:


16

Saya mungkin akan menggunakan Ansible . Ini adalah konfigurasi yang sangat sederhana manajemen / mesin orkestrasi yang jauh lebih mudah untuk memulai daripada Wayang (Wayang dulu pilihan saya untuk ini, tetapi tidak selalu sekarang, setelah menemukan Ansible).

Manfaat dari Ansible di sini adalah bahwa ia berkomunikasi langsung melalui SSH, sehingga Anda dapat mulai menggunakan kredensial dan alur kerja SSH yang ada saja.

Jika saat ini Anda mengkonfigurasi BMC Anda dengan ipmitool, Anda dapat melakukan sesuatu seperti:

Definisikan file Host - Ini memberi tahu Ansible host mana yang ada dalam grup bmc (dalam hal ini), dan yang menjalankannya.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

Dan seterusnya ... Anda juga dapat menggunakan nama host di file itu, selama mereka dapat diatasi.

Kemudian buat "buku pedoman", yang merupakan sekumpulan perintah untuk dijalankan pada setiap host dalam grup host. Anda ingin memiliki tata letak direktori top-down seperti ini:

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

Playbook memiliki Peran , yang merupakan bagian kecil dari konfigurasi yang dapat Anda uraikan dan gunakan kembali.

Jadi saya akan membuat file bernama bmc.yml(Semua konfigurasi di file YAML)

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

Kemudian di dalam roles/bmcconfig/tasks/main.ymlAnda dapat mulai membuat daftar perintah yang harus dijalankan pada setiap host, untuk berkomunikasi dengan ipmi.

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

Saat Anda menjalankan playbook, dengan ansible-playbook -i hosts bmc.ymlperintah yang tercantum di tasks/main.ymluntuk setiap peran akan dieksekusi dalam urutan top-down pada setiap host yang ditemukan di bmchostgroup dihosts

group_vars/all adalah file yang menarik, ini memungkinkan Anda untuk menentukan pasangan kunci-nilai variabel dan nilai-nilai yang dapat digunakan dalam buku pedoman Anda.

jadi Anda bisa mendefinisikan sesuatu seperti

ipmitool_password: $512315Adb

di Anda group_vars/alldan sebagai hasilnya, Anda akan dapat memiliki sesuatu seperti:

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

di buku pedoman.

Anda dapat menemukan informasi lebih lanjut tentang cara menggunakan "modul" - komponen Ansible yang memungkinkan Anda melakukan hal-hal, cara menulis sendiri: D, dan sebagainya di Halaman Dokumentasi yang Mungkin .


12

Saya telah menulis alat python kecil untuk menjalankan perintah pada 1000 mesin kami, (dan bmc, drac, ilo dan imm)

Apa yang saya lakukan adalah menulis kerangka python yang disebut vsc-manage di mana saya dapat menjalankan perintah yang dikirim ke server, atau bmc, dan kemudian mengkonfigurasi jenis mesin apa yang membutuhkan perintah apa.

Saya memiliki beberapa kelas yang menggabungkan campuran dari perintah-perintah ini,

Jadi untuk mesin dengan imm ia akan ssh ke imm, dan dijalankan power off(dengan cara seperti script-harapan)

Untuk sasis blade bilah kami , ia akan menjalankan ini pada sasis

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

Untuk beberapa drells dell ia akan menjalankan ini pada os (dari master node)

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

Untuk sistem hp baru kami yang melakukan ipmi (dan saya melihat semakin banyak hari ini) itu akan menjalankan ini pada master:

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

atau sistem dell baru perlu ipmitool -I open, Anda mungkin perlu bermain dengan protokol sedikit.

Untuk pengaturan yang tidak termasuk dalam standar ipmi, saya telah mengimplementasikan beberapa hal dari DMTF SMASH CLP , mis. Menyalakan locator led on:

start /system1/led1

Semua ini dalam alat baris perintah yang dapat dijalankan dari laptop kita, yang akan terhubung ke master node yang tepat, menjalankan perintah yang tepat untuk node yang tepat, dan mengembalikan output, dengan daftar kesalahan tambahan jika ada (berdasarkan output pada stderr dan / atau kode sandi)

Ini telah terbukti sangat berguna, dan menambahkan dukungan untuk kelas perangkat keras yang baru relatif mudah sekarang (Berkat kenyataan bahwa sebagian besar vendor sepenuhnya mendukung ipmi dan DMTFSMASHCLP sekarang)

Ini tidak cocok untuk konfigurasi awal (perlu bmc untuk memiliki ip unik dan gateway yang benar, tetapi ini adalah apa yang vendor kami butuhkan untuk memasok kami dengan pengiriman) tetapi dapat melakukan hampir apa pun (juga menjalankan perintah sewenang-wenang pada operasi host sistem, dan secara otomatis menjadwalkan waktu henti di icinga / nagios ketika Anda mem-boot ulang sebuah node, dan / atau mengakui 1000 host dan layanan di icinga / nagios sekaligus)

Memperbarui firmware bmc dan menambahkan dukungan untuk sakelar kami adalah masalah luar biasa yang direncanakan.

MEMPERBARUI

Karena setidaknya beberapa orang tampaknya tertarik, saya telah memberinya polesan terakhir hari ini, dan buka sumber ini di https://github.com/hpcugent/vsc-manage

Sementara ini sangat ditargetkan pada alur kerja kita sendiri (quattor dan / atau pbs) saya harap setidaknya bisa menarik.


Terima kasih untuk ini! Apakah ada keuntungan bahwa pekerjaan Anda memiliki solusi yang lebih mapan seperti Ansible?
MikeyB

Saya belum pernah mendengar dari Ansible sebelumnya, Will pasti akan memeriksanya.
Jens Timmerman

Sejauh yang saya lihat, Ansible belum memiliki dukungan untuk impi dan DMTF SMASH.
Jens Timmerman

Sangat menarik, Jens. Terima kasih telah berbagi proyek ini. Kemungkinan + vsc-manage mulai terlihat sangat berguna dalam menangani server secara massal.
ILIV

ILIV, saya pikir akan lebih baik jika saya punya waktu untuk menambahkan semua fitur vsc-manage ke kemungkinan ;-)
Jens Timmerman

3

Saya terkejut tidak ada yang menyebutkan MAAS ( http://maas.io/ ), yang melakukan persis seperti yang Anda cari. Ia dapat mengkonfigurasi dan mengelola BMC secara otomatis, dan selain itu menyebarkan OS apa pun ke node yang telah Anda daftarkan ke dalam sistem. Ini memiliki UI Web dan API TENANG, dan dirancang untuk berintegrasi dengan sistem otomasi apa pun.

Ketika mesin PXE-boot untuk pertama kalinya, MAAS menggunakan IPMI in-band untuk mengatur kredensial secara otomatis untuk Anda. Sejak saat itu dan seterusnya, Anda dapat dengan mudah melakukan booting jarak jauh dan mematikan mesin.

Untuk lebih jelasnya, periksa dokumentasi Tipe Daya MAAS BMC yang menunjukkan cara mengkonfigurasi BMC secara manual untuk setiap simpul yang terdaftar di MAAS.


Tip yang bagus, terima kasih. Terlihat sangat keren. Ubuntu MAAS tampaknya melakukan beberapa ketentuan yang bagus, manajemen siklus hidup dan sepertinya memiliki beberapa alat manajemen IPMI yang berguna. Kami sudah menggunakan Foreman, yang sudah melakukan ini. Namun, manajemen IPMI The Foreman cukup lemah dan tidak memberikan pengelompokan atau struktur organisasi, tetapi setidaknya memiliki sesuatu. Kami menggunakannya dalam kombinasi beberapa alat lain untuk mengelola seluruh kit dan caboodle secara keseluruhan.
Stefan Lasiewski

Perhatikan bahwa Foreman memang memiliki Organisasi dan Lokasi (lihat projects.theforeman.org/projects/foreman/wiki/… ) mendukung per v1.1. Anda dapat menggunakan fitur-fitur ini (bersama dengan Hostgroups) untuk memberikan koleksi granular (bahkan hierarkis dengan parameter atau dukungan pasangan kunci-nilai) koleksi host.
mxmader
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.