欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Ansible+Redfish+Idrac管理DELL服务器

发布时间:2023/12/31 编程问答 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Ansible+Redfish+Idrac管理DELL服务器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

背景描述

Drac(Dell Remote Access Controlle)戴尔远程访问控制-是访问DELL服务器管理的一款很好的管理系统。基于WEB界面访问,可以友好的查看服务器的硬件资源,同时利用虚拟控制台可以模拟终端访问操作系统。但是如何批量的管理就成了一个问题。为此DELL开发了基于Redfish APIs的外带OOB的ansible模块。利用redfish通过OOB-controller就可以不用通过web方式获取到服务器相关信息,甚至做一些修改操作,同时利用ansible的特性完成批量管理

运行实现

运行实现的过程如下图

实现的功能

  • Inventory: Manages system inventory
  • Update: Manages system firmware
  • System: Manages power and BIOS settings
  • Chassis: Manages the system chassis
  • Manager: Manages OOB controller settings
  • Accounts: Manages OOB controller users
  • 实现前的准备

    DELL服务器

    DELL服务器具备最小化的iDRAC 7/8/9 固件版本要在2.40.40.40以上

    固件版本可以通过iDRAC概述中查看,如下是不符合的

    要想实现这个功能就要升级固件,
    方法是首先在DELL官方下载固件,然后IDrac设置-更新和回滚-更新上传文件路径,上载即可

    升级期间有一个等待的过程,根据经验不会中断系统的运行。关于升级固件,可能会在另一篇文章中描述

    这个就是升级后达到条件的服务器了

    有人可能会有疑问,为什么要升级固件?其实升级固件除了修复安全漏洞外,本次的目标就是增加redfish服务模块

    你可以在网络-服务中看到增加了Redfish模块,如下截图

    同时要保证开启了该模块

    Redfish(红鱼)简介 是一种标准API,旨在为融合的混合IT和软件定义数据中心(SDDC)提供简单安全的管理。Redfish兼具人类可读性和机器能力,利用通用的Internet和Web服务标准将信息直接暴露给现代工具链。

    好吧,看上貌似蛮概念化的,你可以理解为就是一个API就行。

    控制端准备

  • 在一台系统上安装ansible(过程略)
  • 该系统可以访问idrac

    只要网络层可以通信即可,不是真要用浏览器去登录idrac

  • 安装 redfish-ansible-module 1、git clone https://github.com/dell/redfish-ansible-module.git 2、cd redfish-ansible-module/ 3、python install.py

    准备工作完成

  • 实际操作前的最后准备

    因为play-books已经是现成的,所以在ansible的hosts做一下配置,格式大致如下

    [myhosts]
    # hostname OOB controller IP/NAME
    webserver1 baseuri=192.168.0.101
    webserver2 baseuri=192.168.0.102
    dbserver1 baseuri=192.168.0.103

    oob controller IP 一开始我也有点迷糊,实际上就是idrac地址,idrac默认地址是192.168.0.120,根据你实际的idrac地址进行配置即可

    正式操作

    以上准备工作完成以后就可以正式测试使用了,进入到redfish-ansible-module/playbooks 目录后可以看到playbooks剧本了

    我们先执行一个get_disk_inventory.yml 看看

    ansible-playbook get_disk_inventory.yml

    哇哦,我相信你会报如下错误的

    TASK [Get disk inventory] ************************************************************************************************************* Thursday 05 July 2018 09:06:44 +0800 (0:00:00.322) 0:00:00.515 ********* fatal: [webserver1]: FAILED! => {"changed": false, "msg": "HTTP Error: 401"}

    401错误是什么鬼? 还记得上面的图吧?因为使用了OOB就是idrac地址,所以ansible不是利用SSH去执行的,而是利用redfish接口,所以我们要像登录WEB一样加上idrac用户名和密码的参数 -e 就可以了

    ansible-playbook get_disk_inventory.yml -e "user=root password=123456"

    请根据自己实际情况填写用户名和密码

    输出的结果大致如下

    PLAY [Get disk inventory] *************************************************************************************************************TASK [Define output file] ************************************************************************************************************* Thursday 05 July 2018 09:11:57 +0800 (0:00:00.063) 0:00:00.063 ********* included: /root/redfish-ansible-module/playbooks/create_output_file.yml for webserver1TASK [Define timestamp] *************************************************************************************************************** Thursday 05 July 2018 09:11:57 +0800 (0:00:00.025) 0:00:00.088 ********* ok: [webserver1]TASK [Define file to place results] *************************************************************************************************** Thursday 05 July 2018 09:11:57 +0800 (0:00:00.053) 0:00:00.141 ********* ok: [webserver1]TASK [Create dropoff directory for host] ********************************************************************************************** Thursday 05 July 2018 09:11:57 +0800 (0:00:00.035) 0:00:00.177 ********* ok: [webserver1]TASK [Get disk inventory] ************************************************************************************************************* Thursday 05 July 2018 09:11:57 +0800 (0:00:00.281) 0:00:00.458 ********* ok: [webserver1]TASK [Copy results to output file] **************************************************************************************************** Thursday 05 July 2018 09:12:05 +0800 (0:00:07.865) 0:00:08.324 ********* changed: [webserver1]PLAY RECAP **************************************************************************************************************************** webserver1 : ok=6 changed=1 unreachable=0 failed=0 Thursday 05 July 2018 09:12:05 +0800 (0:00:00.532) 0:00:08.857 ********* =============================================================================== Get disk inventory ------------------------------------------------------------------------------------------------------------- 7.87s Copy results to output file ---------------------------------------------------------------------------------------------------- 0.53s Create dropoff directory for host ---------------------------------------------------------------------------------------------- 0.28s Define timestamp --------------------------------------------------------------------------------------------------------------- 0.05s Define file to place results --------------------------------------------------------------------------------------------------- 0.04s Define output file ------------------------------------------------------------------------------------------------------------- 0.03s

    你的输出可能和我的有点区别,只要我们看到任务全部是OK的,那就没问题。这时候会在<rootdir>/webserver1 生成一个json文件

    我截取部分输出内容,大致如下:

    如果只是查找部分数据,可以通过jq工具过滤出想要的字段,简单例子如下

    总结

    以上是生活随笔为你收集整理的Ansible+Redfish+Idrac管理DELL服务器的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。