我们正在升级FutureStack的注册,仅到4月30日。条款和条件适用。 现在注册

Container Fabric是New Relic内部的容器编排和运行时平台。它运行在CoreOS Linux容器码头工人承载在上面的容器戴尔硬件。然而,CoreOS没有传统的包安装程序,不是受支持的Dell平台,只真正支持在Linux容器中运行应用程序。然而,Container Fabric团队需要能够监视和管理底层的Dell硬件。

解决方案?事实上,容器是解决这个问题的一个非常有用的方法。

戴尔的Linux软件包被设计为在非常特定的发行版上运行,这些发行版必须安装特定的补丁级别。这些工具往往在新的操作系统版本或补丁发布很久之后才更新,因此如果您的系统是最新的版本,您可能会遇到意想不到的bug。我们没有使用配置管理工具在受支持的系统上安装软件,或者只是在不受支持的系统上没有这些工具,而是决定使用容器来确保我们可以在任何可以运行基于linux的容器的系统上运行这个关键软件。

在这篇文章中,我将分享我们如何在容器中运行这些戴尔工具,以便我们能够正确地管理运行容器平台的底层硬件主机。

我们需要的软件组件

首先,我们确定了我们想使用的戴尔软件工具。我们决定下列事项:

  • OpenManage Server管理员OpenManage是一套戴尔工具,允许用户和系统在戴尔硬件上进行深入的库存报告和配置。
  • Dell iDRAC服务模块(iSM)ISM是Dell的一款服务,运行在Linux操作系统上,与嵌入式集成系统通信戴尔远程访问控制器(iDRAC).除此之外,这允许Linux更新iDRAC中的重要信息,包括系统的真正主机名。
  • 戴尔系统更新(DSU)DSU是一种工具,它允许在Linux内将固件更新应用到支持dell的硬件上。每个容器都包含这些戴尔工具的最新版本。除了配置和监视我们的Dell硬件之外,我们还希望能够监视硬件的故障。考虑到这一点,我们包括了命令行实用程序check_openmanage在每个容器。

如果您想在自己的系统上尝试这些,可以在上面找到这些容器的存储库GitHub.README文件中包含了启动这些容器的说明。

使用OpenManage容器

我们使用OpenManage容器作为一个简单的命令行工具来执行诸如检查Dell主机的机箱信息、清除主机的机箱信息等任务嵌入式系统管理(ESM)日志,并检查系统的整体健康状况。

例如,一旦OMSA容器启动,我们可以运行以下命令:

  • 查看机箱的详细信息。
    #码头工人exec omsa omreport底盘信息底盘信息指数:0底盘名称:主系统底盘主机名:dell-host.example.net iDRAC8版本:2.30.30.30(构建50)生命周期控制器版本:2.30.30.30底盘模型:PowerEdge R430底盘锁:现在底盘服务标签:225 xhc2快递服务代码:0000924034 Chassis Asset Tag: Unknown Flash Chassis identify LED state: Off Flash Chassis identify LED timeout value: 300
  • 查询系统的整体健康状态。
    # docker exec omsa check_openmanage OK - System: 'PowerEdge R430', SN: '225XHC2', 128gb ram(8内存),1个逻辑驱动器,2个物理驱动器

通过Dell iDrac服务模块(ISM)

当我们运行这个容器时,使用有用的os级信息更新iDrac,包括Dell机器的正确主机名。

注意:iDrac模块要求您安装usb-storage内核模块,因为这是这些工具与iDrac交互的方式。)

例如:

# sudo modprobe usb_storage # docker运行——privilege -d -P -v /var/log:/var/log——restart=always——uts=host——net=host——name=ism dell-host.example.net/container-fabric/dell-ism24:latest

ISM服务器信息

注意:ISM返回的Linux发布信息与容器OS-CentOS 7匹配,与主机OS-CoreOS不匹配。)

使用DSU工具

您可以交互式地和非交互式地运行DSU。使用默认值运行容器,使用dsu——inventory命令在系统上执行一个非交互式的硬件清单报告。许多DSU命令需要很长时间才能完成,因为它们必须爬过大部分系统硬件。

注意:DSU还需要安装usb-storage内核模块。)

例如:

# sudo modprobe usb_storage # docker run——rm -ti——privileged -P——name=dell-dsu dell-host.example.net/container-fabric/dell-ism24:latest正在验证目录安装…从存储库安装目录…抓取dsucatalog……阅读目录……安装库存收集器…抓取invcol_WF06C_LN64_16.12.200.896_A00……正在验证库存采集器安装…获取系统库存…1.BIOS(版本:2.0.1) CPLD ( Version : 1.0.3 ) 3. PERC H730 Mini Controller 0 Firmware ( Version : 25.4.0.0015 ) 4. Firmware for - Disk 0 in Backplane 1 of PERC H730 Mini Controller 0 ( Version : DK04 ) 5. iDRAC ( Version : 2.30.30.30 ) 6. 13G SEP Firmware, BayID: 1 ( Version : 2.23 ) The true utility of DSU lies in its ability to detect and apply required firmware updates to the system. You can easily do this by running DSU without any options. The example below updates only the PERC firmware, but the DSU can also update all firmware if desired. # sudo modprobe usb_storage # docker run --rm -ti --privileged -P --name=dsu dell-host.example.net/container-fabric/dell-dsu:latest dsu Verifying catalog installation ... Installing catalog from repository ... Fetching dsucatalog ... Reading the catalog ... Installing inventory collector ... Fetching invcol_WF06C_LN64_16.12.200.896_A00 ... Verifying inventory collector installation ... Getting System Inventory ... Determining Applicable Updates ... |-----------Dell System Updates-----------| [ ] represents 'not selected' [*] represents 'selected' [-] represents 'Component already at repository version (can be selected only if -e option is used)' Choose: q - Quit without update, c to Commit, - To Select/Deselect, a - Select All, n - Select None [-]1 13G SEP Firmware, BayID: 1 Current Version : 2.23 same as : 2.23 [ ]2 iDRAC Current Version : 2.30.30.30 Upgrade to : 2.41.40.40 [ ]3 Firmware for - Disk 0 in Backplane 1 of PERC H730 Mini Controller 0 Current Version : DK04 Upgrade to : DK05 [ ]4 BIOS Current Version : 2.0.1 Upgrade to : 2.3.4 [*]5 PERC H730 Mini Controller 0 Firmware Current Version : 25.4.0.0015 Upgrade to : 25.5.0.0018 Enter your choice : c Fetching SAS-RAID_Firmware_2H45F_LN_25.5.0.0018_A08 ... Installing SAS-RAID_Firmware_2H45F_LN_25.5.0.0018_A08 ... Collecting inventory... .. Running validation... ... The system should be restarted for the update to take effect. Done! Please run 'dsu --inventory' to check the inventory Please reboot the system for update(s) to take effect # shutdown -r now

容器使Linux软件更加便携

容器是打包具有非常特定和深刻依赖树的软件的好方法,这些依赖树使其难以本地安装和管理。在Container Fabric中,我们可以根据需要灵活地打包、部署以及最重要的是使用这些硬件监控工具,即使它们不能在CoreOS Container Linux上本机运行,而且戴尔在该环境中也不支持它们。

希望这种方法能够帮助其他人满足他们的硬件监视需求,并提醒您,容器可以使几乎所有Linux软件比应用程序最初的作者所希望的更易于移植。