ฉันจะจัดการ IPMI BMC หลายร้อยรายการได้อย่างไร


30

ฉันมีคอมพิวเตอร์มากกว่า 200 เครื่องซึ่งสามารถให้บริการIPMIได้ เซิร์ฟเวอร์นั้นผลิตโดย บริษัท ที่แตกต่างกันหลายแห่ง (SuperMicro, Dell และอื่น ๆ ) และมีรุ่น BMC 6-7 รุ่นจากผู้จำหน่ายต่าง ๆ ประมาณ 5 รายและแต่ละรุ่นมีนิสัยของตัวเอง

จนถึงตอนนี้เราได้กำหนดค่า BMC โดยใช้การรวมกันของ DHCP และกำหนดค่า BMC แต่ละแบบด้วยตนเอง การกำหนดค่าด้วยตนเองอาจทำได้โดยใช้ซีดีรอมที่สามารถบูตได้การกำหนดค่าจาก BIOS (หากรองรับ) จากระบบปฏิบัติการโฮสต์ที่มียูทิลิตีเช่นipmitool , freeipmiเป็นต้นหรือจากระยะไกลโดยใช้ ipmitool หากเราสามารถระบุที่อยู่เครือข่ายของ เครื่อง

อย่างไรก็ตามการกำหนดค่าด้วยตนเองนี้ค่อนข้างน่าเบื่อ ในบางกรณีเราต้องการเปลี่ยนการตั้งค่าทั่วโลกสำหรับ BMC ทั้งหมดซึ่งต้องการให้ผู้ดูแลระบบเรียกใช้คำสั่งจากหลายสิบกล่อง เนื่องจาก BMC มีให้โดยผู้ขายที่แตกต่างกันและแต่ละรุ่นของ BMC อาจมีลักษณะนิสัยของตัวเองคำสั่งเดียวกันจึงไม่สามารถใช้งานกับ BMC ทั้งหมดได้

มีระบบสาธารณูปโภคใดบ้างที่อนุญาตให้ฉันกำหนดค่า BMC บนกล่องหลาย ๆ กล่อง? บอกว่าฉันต้องการสอบถามพารามิเตอร์เกี่ยวกับ BMC ที่แตกต่างกันหลายสิบหรือเปลี่ยนรหัสผ่านปิดการใช้งานการเข้าถึง HTTP ไปยัง WebUI หรือปิดการใช้งานช่องโหว่ความปลอดภัยศูนย์ตัวเลขที่น่าอับอาย

คะแนนโบนัสสำหรับยูทิลิตี้ใด ๆ ที่จะอนุญาตให้ฉันอัปเดตเฟิร์มแวร์ BMC ซึ่งจำเป็นสำหรับการลดความเสี่ยงด้านความปลอดภัยต่างๆ


3
แน่นอนว่าดูเหมือนว่าสิ่งที่คุณสามารถทำได้ถ้าคุณหุ่นเชิด / mcollective คุณใช้facterอาจมีข้อเท็จจริงที่กำหนดเองเพื่อตรวจสอบว่าคุณมีอุปกรณ์ประเภทใดจากนั้นคุณกำหนดค่าสิ่งต่าง ๆ โดยใช้หุ่นเชิดหรือโดยการกดคำสั่งด้วย mcollective
Zoredache

นอกจากนี้คุณยังอาจต้องการที่จะดูที่xcat มันไม่ซับซ้อนเหมือนหุ่นเชิดเมื่อพูดถึงการจัดการการกำหนดค่าใส่มีเชลล์กระจายแบบรวมซึ่งสามารถทำงานกับกลุ่มและผสานรวมกับ IPMI ได้อย่างแน่นหนา
ไอแซค

มีดโกนหุ่นอาจเป็นวิธีแก้ปัญหาด้วยถึงแม้ว่าฉันยังไม่ได้ดู: vdatacloud.com/blogs/2012/05/23/…
Stefan Lasiewski

ฉันอยู่ที่ Puppetconf และฉันเพิ่งพูดกับผู้จัดการโครงการของ Mcollective (หรือที่รู้จักกันในชื่อ Puppet Enterprise Orchestration) จาก Mcollective จัดการโหนดของคุณ (ที่ระดับ OS) จากนั้นให้สิ่งนี้ทำงานในระดับ IPMI ซึ่งค่อนข้างไกลนอกสิ่งที่ Mcollective ออกแบบมา แต่มันอาจเป็นไปได้
Stefan Lasiewski

คำตอบ:


16

ผมอาจจะใช้เบิ้ล มันเป็นเครื่องมือการจัดการการกำหนดค่า / การเรียบง่ายที่ง่ายกว่ามากในการเริ่มต้นกับหุ่นกระบอก

ประโยชน์ของ Ansible ที่นี่คือมันสื่อสารโดยตรงผ่าน SSH ดังนั้นคุณจะสามารถเริ่มต้นใช้เพียงแค่ข้อมูลประจำตัว SSH ที่มีอยู่และเวิร์กโฟลว์ของคุณ

หากคุณกำลังกำหนดค่า BMC ของคุณด้วย ipmitool คุณสามารถทำสิ่งต่อไปนี้ได้:

กำหนดไฟล์โฮสต์ - เป็นการบอก Ansible ว่าโฮสต์ใดอยู่ในกลุ่มbmc (ในกรณีนี้) และไฟล์ใดที่จะเรียกใช้

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

และอื่น ๆ ... คุณยังสามารถใช้ชื่อโฮสต์ในไฟล์นั้นได้ตราบใดที่พวกเขาสามารถแก้ไขได้

จากนั้นสร้าง "playbook" ซึ่งเป็นชุดคำสั่งที่จะทำงานในแต่ละโฮสต์ในกลุ่มโฮสต์ คุณต้องการที่จะมีรูปแบบไดเรกทอรีจากบนลงล่างนี้:

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

Playbook มีบทบาทซึ่งเป็นส่วนเล็ก ๆ ของการกำหนดค่าที่คุณสามารถแยกย่อยและนำมาใช้ซ้ำได้

ดังนั้นฉันจะสร้างไฟล์ที่เรียกว่าbmc.yml(การตั้งค่าทั้งหมดของ Ansible อยู่ในไฟล์ YAML)

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

จากนั้นภายในroles/bmcconfig/tasks/main.ymlคุณสามารถเริ่มต้นรายการคำสั่งที่จะเรียกใช้ในแต่ละโฮสต์เพื่อสื่อสารกับ ipmi

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

เมื่อคุณเรียกใช้ playbook โดยมีansible-playbook -i hosts bmc.ymlคำสั่งที่ระบุไว้ในtasks/main.ymlแต่ละบทบาทจะถูกดำเนินการตามลำดับจากบนลงล่างในแต่ละโฮสต์ที่พบในกลุ่มbmcโฮสต์ในhosts

group_vars/all เป็นไฟล์ที่น่าสนใจช่วยให้คุณกำหนดคู่ตัวแปรและค่าคีย์ - ค่าที่สามารถใช้ใน playbooks ของคุณ

เพื่อให้คุณสามารถกำหนดสิ่งที่ต้องการ

ipmitool_password: $512315Adb

ทั้งในgroup_vars/allและของคุณคุณจะมีสิ่งที่ชอบ:

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

ใน playbook

ท่านสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับวิธีการวิธีการใช้ "โมดูล" - องค์ประกอบของเบิ้ลที่ช่วยให้คุณสามารถทำสิ่งที่วิธีการเขียนของคุณเอง: D, และอื่น ๆ ที่เบิ้ลหน้าเอกสาร


12

ฉันได้เขียนเครื่องมือหลามขนาดเล็กเพื่อเรียกใช้คำสั่งบนเครื่อง 1,000 เครื่องของเรา (และ bmc, drac's, ilo's และ imm's)

สิ่งที่ฉันทำคือเขียน python-framework ชื่อvsc-manageซึ่งฉันสามารถเรียกใช้คำสั่งที่ส่งไปยังเซิร์ฟเวอร์หรือ bmc แล้วกำหนดค่าประเภทของเครื่องที่ต้องการคำสั่งอะไร

ฉันมีหลายคลาสที่รวมคำสั่งเหล่านี้เข้าด้วยกัน

ดังนั้นสำหรับเครื่องที่มีอิมแพคมันจะ ssh ไปที่อิมและเรียกใช้power off(ในลักษณะที่คาดหวังสคริปต์)

สำหรับแชสซี imb bladeของเรามันจะทำงานบนแชสซี

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

สำหรับdell dracsบางตัวมันจะรันบนระบบปฏิบัติการ (ของโหนดหลัก)

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

หรือระบบที่ใหม่กว่าของเดลล์ต้องการipmitool -I openคุณอาจต้องเล่นกับโปรโตคอลสักหน่อย

สำหรับการตั้งค่าที่ไม่รวมอยู่ในมาตรฐาน ipmi ฉันได้ดำเนินการบางอย่างจาก DMTF SMASH CLPเช่นการเปิดใช้ตัวระบุตำแหน่ง:

start /system1/led1

ทั้งหมดนี้ในเครื่องมือบรรทัดคำสั่งที่สามารถเรียกใช้จากแล็ปท็อปของเราที่จะเชื่อมต่อกับโหนดมาสเตอร์ขวาเรียกใช้คำสั่งที่ถูกต้องสำหรับโหนดขวาและส่งคืนเอาต์พุตพร้อมรายการข้อผิดพลาดเพิ่มเติมหากมี (ขึ้นอยู่กับ เอาต์พุตบน stderr และ / หรือ exitcode)

สิ่งนี้ได้รับการพิสูจน์แล้วว่ามีประโยชน์มากและการเพิ่มการรองรับฮาร์ดแวร์ระดับใหม่นั้นค่อนข้างง่ายในตอนนี้ (ด้วยความจริงที่ว่าผู้ขายส่วนใหญ่รองรับ ipmi และ DMTFSMASHCLP อย่างเต็มที่ในขณะนี้)

นี่ไม่เหมาะสำหรับการกำหนดค่าเริ่มต้น (มันต้องการ bmc เพื่อให้มี ip ที่ไม่ซ้ำกันและเกตเวย์ที่ถูกต้อง แต่นี่คือสิ่งที่ผู้ขายของเราจำเป็นต้องให้เราในการจัดส่ง) แต่สามารถทำอะไรก็ได้เกือบทั้งหมด ระบบและกำหนดการหยุดทำงานโดยอัตโนมัติในicinga / nagiosเมื่อคุณรีบูตโหนดและ / หรือรับทราบ 1,000 โฮสต์และบริการใน icinga / nagios พร้อมกัน)

การอัปเดตเฟิร์มแวร์ bmc และเพิ่มการรองรับสวิตช์ของเราเป็นปัญหาที่โดดเด่นที่วางแผนไว้

UPDATE

ตั้งแต่อย่างน้อยบางคนดูเหมือนสนใจฉันได้ให้มันขัดล่าสุดในวันนี้และเปิดแหล่งที่มาที่ https://github.com/hpcugent/vsc-manage

ในขณะนี้มีการกำหนดเป้าหมายอย่างมากต่อกระบวนการทำงานของเรา (quattor และ / หรือ pbs) ฉันหวังว่าอย่างน้อยมันก็น่าสนใจ


ขอบคุณสำหรับสิ่งนี้! มีข้อได้เปรียบใด ๆ ที่งานของคุณมีเหนือโซลูชันที่กำหนดไว้เช่น Ansible
MikeyB

ฉันไม่เคยได้ยินจาก Ansible มาก่อนจะดูมันอย่างแน่นอน
Jens Timmerman

เท่าที่ฉันเห็นมัน Ansible ยังไม่รองรับ impi และ DMTF SMASH
Jens Timmerman

มันน่าสนใจเจน ขอบคุณสำหรับการแบ่งปันโครงการนี้ Ansible + vsc-manage เริ่มดูมีประโยชน์มากในการจัดการกับเซิร์ฟเวอร์
ILIV

ILIV ผมคิดว่ามันจะดีถ้าผมมีเวลาในการเพิ่มคุณลักษณะทั้งหมดของ VSC-จัดการเบิ้ล ;-)
Jens Timmerman

3

ฉันประหลาดใจที่ไม่มีใครพูดถึง MAAS ( http://maas.io/ ) ซึ่งทำสิ่งที่คุณต้องการอย่างแน่นอน มันสามารถกำหนดค่าอัตโนมัติและจัดการ BMCs และนอกจากนี้ยังปรับใช้ระบบปฏิบัติการใด ๆ ลงในโหนดที่คุณสมัครเข้าสู่ระบบ มันมี Web UI และ RESTful API และถูกออกแบบมาเพื่อรวมเข้ากับระบบอัตโนมัติใด ๆ

เมื่อเครื่อง PXE-boots เป็นครั้งแรก MAAS จะใช้ IPMI ในวงดนตรีเพื่อตั้งค่าข้อมูลรับรองให้คุณโดยอัตโนมัติ จากจุดนั้นเป็นต้นไปคุณสามารถบูตเครื่องจากระยะไกลและปิดเครื่องได้อย่างง่ายดาย

สำหรับรายละเอียดเพิ่มเติมให้ตรวจสอบเอกสาร MAAS BMC Power Typesที่แสดงวิธีกำหนดค่า BMC ด้วยตนเองสำหรับโหนดใด ๆ ที่ลงทะเบียนใน MAAS


คำแนะนำที่ดีขอบคุณ ดูเท่ห์ดี MAAS ของ Ubuntu ดูเหมือนจะทำการจัดสรรที่ดีการจัดการวงจรชีวิตและดูเหมือนว่ามันมีเครื่องมือการจัดการ IPMI ที่มีประโยชน์ เราใช้ The Foreman อยู่แล้วซึ่งทำสิ่งนี้บ้างแล้ว อย่างไรก็ตามการจัดการ IPMI ของโฟร์แมนค่อนข้างอ่อนแอและไม่มีการจัดกลุ่มหรือโครงสร้างองค์กร แต่อย่างน้อยก็มีบางอย่าง เราใช้มันร่วมกับเครื่องมืออื่น ๆ จำนวนหนึ่งเพื่อจัดการชุดทั้งหมดและ caboodle ทั้งหมด
Stefan Lasiewski

โปรดทราบว่าหัวหน้าคนงานมีหน่วยงานและสถานที่ (ดูโปรเจ็กต์ . theforeman.org/projects/foreman/wiki/ ...... ) สนับสนุนตั้งแต่ v1.1 คุณสามารถใช้คุณสมบัติเหล่านี้ (พร้อมกับกลุ่มโฮสต์) เพื่อจัดกลุ่มคอลเลกชันที่มีเหตุผลอย่างละเอียด (แม้กระทั่งลำดับชั้นพร้อมการสนับสนุนพารามิเตอร์หรือคู่ค่าคีย์) ของโฮสต์
mxmader
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.