Drac(Dell Remote Access Controlle)戴爾遠程訪問控制-是訪問DELL服務器管理的一款很好的管理系統。基於WEB界面訪問,能夠友好的查看服務器的硬件資源,同時利用虛擬控制檯能夠模擬終端訪問操做系統。可是如何批量的管理就成了一個問題。爲此DELL開發了基於Redfish APIs的外帶OOB的ansible模塊。利用redfish經過OOB-controller就能夠不用經過web方式獲取到服務器相關信息,甚至作一些修改操做,同時利用ansible的特性完成批量管理python
運行實現的過程以下圖git
DELL服務器具有最小化的iDRAC 7/8/9 固件版本要在2.40.40.40以上github
固件版本能夠經過iDRAC概述中查看,以下是不符合的web
要想實現這個功能就要升級固件,
方法是首先在DELL官方下載固件,而後IDrac設置-更新和回滾-更新上傳文件路徑,上載便可
升級期間有一個等待的過程,根據經驗不會中斷系統的運行。關於升級固件,可能會在另外一篇文章中描述json
這個就是升級後達到條件的服務器了瀏覽器
有人可能會有疑問,爲何要升級固件?其實升級固件除了修復安全漏洞外,本次的目標就是增長redfish服務模塊安全
你能夠在網絡-服務中看到增長了Redfish模塊,以下截圖
同時要保證開啓了該模塊服務器
Redfish(紅魚)簡介 是一種標準API,旨在爲融合的混合IT和軟件定義數據中心(SDDC)提供簡單安全的管理。Redfish兼具人類可讀性和機器能力,利用通用的Internet和Web服務標準將信息直接暴露給現代工具鏈。網絡
好吧,看上貌似蠻概念化的,你能夠理解爲就是一個API就行。ide
只要網絡層能夠通訊便可,不是真要用瀏覽器去登陸idrac
一、git clone https://github.com/dell/redfish-ansible-module.git 二、cd redfish-ansible-module/ 三、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 webserver1 TASK [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工具過濾出想要的字段,簡單例子以下