मैं IPMI BMCs के सैकड़ों कैसे प्रबंधित कर सकता हूं?


30

मेरे पास 200 से अधिक कंप्यूटर हैं जो आईपीएमआई सेवाएं प्रदान कर सकते हैं । सर्वर कई अलग-अलग कंपनियों (सुपरमाइक्रो, डेल, इत्यादि) द्वारा निर्मित होते हैं, और लगभग 5 विभिन्न विक्रेताओं से 6-7 बीएमसी मॉडल होते हैं, और प्रत्येक मॉडल की अपनी पहचान होती है।

अब तक हम DHCP के संयोजन का उपयोग करके BMCs को कॉन्फ़िगर कर रहे हैं और प्रत्येक BMC को मैन्युअल रूप से कॉन्फ़िगर कर रहे हैं। मैन्युअल कॉन्फ़िगरेशन बूटेबल CD-ROM, BIOS से कॉन्फ़िगरेशन (यदि समर्थित हो) का उपयोग करके किया जा सकता है, मेजबान ऑपरेटिंग सिस्टम से , जैसे कि ipmitool , freeipmi , इत्यादि की उपयोगिता के साथ या दूरस्थ रूप से ipmitool का उपयोग करके यदि हम नेटवर्क पते को निर्धारित कर सकते हैं। डिवाइस।

हालाँकि, यह मैन्युअल कॉन्फ़िगरेशन थकाऊ है। कुछ मामलों में हम सभी BMCs पर वैश्विक रूप से एक सेटिंग बदलना चाहते हैं, जिसके लिए आवश्यक है कि एक व्यवस्थापक दर्जनों बॉक्स के विरुद्ध कमांड चलाए। चूंकि BMCs विभिन्न विक्रेताओं द्वारा प्रदान की जाती हैं और BMC के प्रत्येक मॉडल के पास स्वयं के आइडिओसिप्रेसिज़ हो सकते हैं, वही आदेश हमेशा सभी BMCs पर काम नहीं करता है।

क्या कोई उपयोगिताओं हैं जो मुझे बड़े पैमाने पर दर्जनों बॉक्स पर BMCs को कॉन्फ़िगर करने की अनुमति देती हैं? यह कहें कि मैं दर्जनों विभिन्न BMCs पर एक पैरामीटर को क्वेरी करना चाहता हूं, या पासवर्ड बदलना चाहता हूं, WebUI पर HTTP एक्सेस को अक्षम करें या कुख्यात सिफर शून्य सुरक्षा छेद को अक्षम करें ।

किसी भी उपयोगिता के लिए बोनस अंक जो मुझे बीएमसी फर्मवेयर को अपडेट करने की अनुमति देगा, जो कई सुरक्षा कमजोरियों को कम करने के लिए आवश्यक है


3
यह निश्चित लगता है कि आप कुछ ऐसा कर सकते हैं यदि आप कठपुतली / रंगरोगन करते हैं। आप फैक्टर का उपयोग करते हैं , संभवतः कुछ कस्टम तथ्यों के साथ यह पता लगाने के लिए कि आपके पास किस प्रकार का उपकरण है, तो आप कठपुतली का उपयोग करके चीजों को कॉन्फ़िगर करते हैं, या मैक्लेक्टिव के साथ कमांड पुश करके।
Zoredache

तुम भी xcat पर एक नज़र रखना चाहते हो सकता है । इसका विन्यास कठपुतली जैसा नहीं है जब यह विन्यास प्रबंधन की बात आती है, तो इसमें एकीकृत वितरित शेल होता है, जो समूहों पर काम कर सकता है, और आईपीएमआई के साथ कसकर एकीकृत होता है।
आइजैक

कठपुतली रेजर एक समाधान भी हो सकता है, हालांकि मैंने अभी तक उस पर ध्यान नहीं दिया है: vdatacloud.com/blogs/2012/05/23/…
Stefan Lasiewski

मैं Puppetconf में हूं और मैंने सिर्फ Mcollective (अन्यथा कठपुतली उद्यम आर्केस्ट्रा के रूप में जाना जाता है) के लिए परियोजना प्रबंधक से बात की। Mcollective के अपने नोड्स (OS स्तर पर) का प्रबंधन करता है, तो IPMI स्तर पर काम करने के लिए यह काफी दूर लगता है कि Mcollective को किस लिए बनाया गया था। लेकिन यह संभव है।
स्टीफन लासवर्स्की

जवाबों:


16

मैं शायद Ansible का उपयोग करूंगा । यह एक बहुत ही सरल विन्यास प्रबंधन / ऑर्केस्ट्रेशन इंजन है जिसे पपेट (पपेट ने इसके लिए मेरी पसंद के रूप में इस्तेमाल किया है, लेकिन इसे हमेशा के लिए नहीं खोजा जा सकता है, लेकिन यह अब तक संभव नहीं है)।

यहां पर Ansible का लाभ यह है कि यह सीधे SSH पर संचार करता है, इसलिए आप अपने मौजूदा SSH क्रेडेंशियल्स और वर्कफ़्लो का उपयोग करके आरंभ कर पाएंगे।

यदि आप वर्तमान में अपने BMCs को ipmitool से कॉन्फ़िगर कर रहे हैं, तो आप कुछ ऐसा कर पाएंगे:

एक होस्ट फ़ाइल को परिभाषित करें - यह बताता है कि कौन सा होस्ट bmc समूह में है (इस मामले में), और जिस पर सामान चलाना है।

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

और इसी तरह ... जब तक वे resolvable हैं, तब तक आप उस फ़ाइल में होस्टनाम का उपयोग भी कर सकते हैं।

फिर एक "प्लेबुक" बनाएं, जो होस्ट-समूह में प्रत्येक होस्ट पर चलने के लिए कमांड का सेट है। आप इस तरह का टॉप-डाउन डायरेक्टरी लेआउट बनाना चाहते हैं:

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आप उन आदेशों को सूचीबद्ध करना शुरू कर सकते हैं जो प्रत्येक मेजबान पर चलाने के लिए हैं, आईपीमी के साथ संवाद करने के लिए।

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

जब आप प्लेबुक चलाते हैं, तो प्रत्येक भूमिका के लिए ansible-playbook -i hosts bmc.ymlसूचीबद्ध कमांडों को tasks/main.ymlहोस्ट bmcग्रुप में पाए जाने वाले प्रत्येक होस्ट पर टॉप-डाउन ऑर्डर में निष्पादित किया जाएगा ।hosts

group_vars/all एक दिलचस्प फ़ाइल है, यह आपको चर और मानों के प्रमुख-मूल्य जोड़े को परिभाषित करने की अनुमति देता है जो आपकी प्लेबुक में उपयोग किए जा सकते हैं।

इसलिए आप कुछ ऐसा परिभाषित कर सकते हैं

ipmitool_password: $512315Adb

आपके group_vars/allऔर परिणामस्वरूप, आप कुछ ऐसा कर सकेंगे:

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

प्लेबुक में।

आप "मॉड्यूल" का उपयोग करने के तरीके के बारे में अधिक जानकारी प्राप्त कर सकते हैं - Ansible के घटक जो आपको सामान करने की अनुमति देते हैं, अपना खुद का लिखने के लिए कैसे करें: D, और इसी तरह से Ansible प्रलेखन पृष्ठ पर


12

मैंने हमारी 1000 मशीनों पर कमांड चलाने के लिए एक छोटा अजगर उपकरण लिखा है, (और उनके bmc, drac's, ilo's और imm's)

मैंने जो किया था, उसे Pcthon- फ्रेमवर्क लिखा गया था, जिसे vsc-manage कहा जाता है, जहाँ मैं कमांड चला सकता हूँ जो या तो सर्वर, या bmc पर भेजा जाता है, और फिर कॉन्फ़िगर किया जाता है कि किस प्रकार की मशीन को कमांड की आवश्यकता है।

मेरे पास कई कक्षाएं हैं जो इन कमांड के मिश्रण को जोड़ती हैं,

तो एक साथ मशीनों के लिए IMM यह IMM, और चलाने के लिए ssh जाएगा power off(रास्ते से एक उम्मीद स्क्रिप्ट वस्तु के रूप में)

हमारे imb ब्लेड चेसिस के लिए यह चेसिस पर चलेगा

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

कुछ डेल ड्रेक्स के लिए यह ओएस (एक मास्टर नोड के) पर चलेगा

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

हमारे नए hp सिस्टम के लिए जो ipmi करते हैं (और मैं इन दिनों अधिक से अधिक देखता हूं) यह इसे मास्टर पर चलाएगा:

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

या नए dell सिस्टम की जरूरत है ipmitool -I open, आपको प्रोटोकॉल के साथ थोड़ा खेलने की आवश्यकता हो सकती है।

आईपीएमआई मानक में शामिल सेटिंग्स के लिए मैंने डीएमटीएफ एसएमएल सीएलपी से कुछ चीजें लागू नहीं की हैं , जैसे लोकेटर को चालू करना:

start /system1/led1

कमांड लाइन टूल में यह सब हमारे लैपटॉप से ​​चलाया जा सकता है, जो सही मास्टर नोड से कनेक्ट होगा, राइट नोड के लिए सही कमांड चलाएगा, और आउटपुट को लौटाएगा, त्रुटियों की एक अतिरिक्त सूची के साथ यदि कोई हो (के आधार पर) Stderr और / या बाहर निकलने पर उत्पादन)

यह बहुत उपयोगी साबित हुआ है, और हार्डवेयर के एक नए वर्ग के लिए समर्थन जोड़ना अब अपेक्षाकृत आसान है (इस तथ्य के लिए धन्यवाद कि ज्यादातर विक्रेता पूरी तरह से ipmi और DMTFSMASHCLP का समर्थन करते हैं)

यह प्रारंभिक कॉन्फ़िगरेशन के लिए अनुकूल नहीं है (इसमें एक विशिष्ट आईपी और सही गेटवे के लिए bmc की आवश्यकता है, लेकिन यह वही है जो हमारे विक्रेताओं को हमें डिलीवरी पर देने की आवश्यकता है) लेकिन लगभग कुछ भी कर सकते हैं (मेजबान ऑपरेटिंग पर मनमाना आदेश भी चला सकते हैं) सिस्टम, और जब आप एक नोड को रिबूट करते हैं, तो icinga / nagios में ऑटोमैटिकली डाउनटाइम शेड्यूल करते हैं, और / या एक साथ icinga / nagios में 1000 होस्ट और सेवाओं को स्वीकार करते हैं)

Bmc फर्मवेयर को अपडेट करना और हमारे स्विच के लिए समर्थन जोड़ना बकाया मुद्दे हैं जो योजनाबद्ध हैं।

अद्यतन करें

चूंकि कम से कम कुछ लोगों को दिलचस्पी थी कि मैंने आज इसे अंतिम रूप दिया है, और इसे https://github.com/hpcugent/vsc-manage पर खोला है

जब भी यह हमारे अपने वर्कफ़्लो (क्वाटॉर और / या pbs) की ओर बहुत लक्षित होता है, तो मुझे उम्मीद है कि यह कम से कम दिलचस्प हो सकता है।


इसके लिए धन्यवाद! क्या कोई फायदा है कि आपके काम ने Ansible जैसे समाधान स्थापित किए हैं?
मिकीबी

मैंने पहले कभी अन्सिबल से नहीं सुना था, निश्चित रूप से इस पर गौर करेंगे।
जेन्स टिम्मरमैन

जहां तक ​​मैं इसे देखता हूं, तो अभी तक अंसिबल को इंपीटी और डीएमटीएफ एसएमएएसएच के लिए कोई समर्थन नहीं है।
जेन्स टिमरमैन

यह दिलचस्प है, जेन्स। इस परियोजना को साझा करने के लिए धन्यवाद। Ansible + vsc- प्रबंधन सर्वर एन मस्से से निपटने में वास्तव में उपयोगी दिखना शुरू कर देता है।
ILIV

ILIV, मुझे लगता है कि अच्छा होगा अगर मुझे कुछ समय के लिए vsc-manage की सभी विशेषताओं को जोड़ने के लिए समय मिल जाए ;-)
Jens Timmerman

3

मुझे आश्चर्य है कि किसी ने MAAS ( http://maas.io/ ) का उल्लेख नहीं किया है , जो वास्तव में वही है जो आप खोज रहे हैं। यह स्वतः ही BMCs को कॉन्फ़िगर और प्रबंधित कर सकता है, और आपके द्वारा सिस्टम में सूचीबद्ध किए गए नोड्स पर किसी भी OS को तैनात करने के अलावा। इसमें एक वेब UI और एक RESTful API है, और इसे किसी भी स्वचालन प्रणाली के साथ एकीकृत करने के लिए डिज़ाइन किया गया है।

जब पहली बार कोई मशीन PXE- बूट करता है, तो MAAS आपके लिए स्वचालित रूप से क्रेडेंशियल सेट करने के लिए इन-बैंड IPMI का उपयोग करता है। उस बिंदु से, आप आसानी से बूट को दूर कर सकते हैं और एक मशीन को बंद कर सकते हैं।

अधिक जानकारी के लिए, MAAS BMC पावर प्रकार के दस्तावेज़ देखें जो बताता है कि MAAS में सूचीबद्ध किसी भी नोड के लिए BMC को मैन्युअल रूप से कॉन्फ़िगर कैसे करें।


एक अच्छी टिप, धन्यवाद। बहुत मस्त लगती है। उबंटू का MAAS कुछ अच्छा प्रावधान, जीवनचक्र प्रबंधन करता है और ऐसा लगता है कि इसमें कुछ उपयोगी IPMI प्रबंधन उपकरण हैं। हम पहले से ही फोरमैन का उपयोग करते हैं, जो पहले से ही कुछ करता है। हालांकि, फोरमैन का आईपीएमआई प्रबंधन काफी कमजोर है और यह समूह या संगठनात्मक संरचना प्रदान नहीं करता है, लेकिन कम से कम इसमें कुछ है। हम इसे पूरे टूल किट और काबुली का प्रबंधन करने के लिए मुट्ठी भर अन्य उपकरणों के संयोजन में उपयोग करते हैं।
स्टीफन लासवर्स्की

ध्यान दें कि फोरमैन के पास संगठन और स्थान होते हैं ( v1.1 के रूप में प्रोजेक्ट देखें ।heforeman.org/projects/ foreman/wiki/…)। आप इन सुविधाओं का उपयोग कर सकते हैं (Hostgroups साथ) यथोचित दानेदार प्रदान करने के लिए (यहां तक ​​कि पैरामीटर या कुंजी-मूल्य जोड़ी समर्थन के साथ पदानुक्रमित) मेजबान का संग्रह।
mxmader
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.