Ansible+Redfish+Idrac管理DELL服务器
背景描述
Drac(Dell Remote Access Controlle)戴爾遠程訪問控制-是訪問DELL服務器管理的一款很好的管理系統(tǒng)。基于WEB界面訪問,可以友好的查看服務器的硬件資源,同時利用虛擬控制臺可以模擬終端訪問操作系統(tǒng)。但是如何批量的管理就成了一個問題。為此DELL開發(fā)了基于Redfish APIs的外帶OOB的ansible模塊。利用redfish通過OOB-controller就可以不用通過web方式獲取到服務器相關信息,甚至做一些修改操作,同時利用ansible的特性完成批量管理
運行實現(xiàn)
運行實現(xiàn)的過程如下圖
實現(xiàn)的功能
實現(xiàn)前的準備
DELL服務器
DELL服務器具備最小化的iDRAC 7/8/9 固件版本要在2.40.40.40以上
固件版本可以通過iDRAC概述中查看,如下是不符合的
要想實現(xiàn)這個功能就要升級固件,
方法是首先在DELL官方下載固件,然后IDrac設置-更新和回滾-更新上傳文件路徑,上載即可
升級期間有一個等待的過程,根據(jù)經(jīng)驗不會中斷系統(tǒng)的運行。關于升級固件,可能會在另一篇文章中描述
這個就是升級后達到條件的服務器了
有人可能會有疑問,為什么要升級固件?其實升級固件除了修復安全漏洞外,本次的目標就是增加redfish服務模塊
你可以在網(wǎng)絡-服務中看到增加了Redfish模塊,如下截圖
同時要保證開啟了該模塊
Redfish(紅魚)簡介 是一種標準API,旨在為融合的混合IT和軟件定義數(shù)據(jù)中心(SDDC)提供簡單安全的管理。Redfish兼具人類可讀性和機器能力,利用通用的Internet和Web服務標準將信息直接暴露給現(xiàn)代工具鏈。
好吧,看上貌似蠻概念化的,你可以理解為就是一個API就行。
控制端準備
只要網(wǎng)絡層可以通信即可,不是真要用瀏覽器去登錄idrac
準備工作完成
實際操作前的最后準備
因為play-books已經(jīng)是現(xiàn)成的,所以在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,根據(jù)你實際的idrac地址進行配置即可
正式操作
以上準備工作完成以后就可以正式測試使用了,進入到redfish-ansible-module/playbooks 目錄后可以看到playbooks劇本了
我們先執(zhí)行一個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去執(zhí)行的,而是利用redfish接口,所以我們要像登錄WEB一樣加上idrac用戶名和密碼的參數(shù) -e 就可以了
ansible-playbook get_disk_inventory.yml -e "user=root password=123456"請根據(jù)自己實際情況填寫用戶名和密碼
輸出的結果大致如下
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你的輸出可能和我的有點區(qū)別,只要我們看到任務全部是OK的,那就沒問題。這時候會在<rootdir>/webserver1 生成一個json文件
我截取部分輸出內(nèi)容,大致如下:
如果只是查找部分數(shù)據(jù),可以通過jq工具過濾出想要的字段,簡單例子如下
總結
以上是生活随笔為你收集整理的Ansible+Redfish+Idrac管理DELL服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CocoaPods之Podfile\Po
- 下一篇: 基于神经网络的PID控制,pid神经网络