Ansible升级DELL服务器的固件

今天我们来使用Ansible批量升级DELL的固件。

先编辑好位于/etc/ansible/hosts文件,把每台戴尔服务器的iDRAC IP填进去。

PS:由于戴尔的iDRAC出厂的IP一样,可以参照网上的方法修改。

需要准备的东西

  1. 戴尔的Catalog.xml文件,需要跟固件放在同一个目录,下载地址 http://downloads.dell.com/catalog/Catalog.gz
  2. 需要升级的固件。
  3. 被升级的服务器
  4. Ansible >= 2.2
  5. Python >= 2.7
  6. Dell EMC OpenManage Ansible Modules for iDRAC
  7. Dell EMC OpenManage Python SDK
  8. NFS服务器
  9. iDRAC 7/8,固件版本为2.41.40.40或更高版本
  10. iDRAC 9,固件版本3.00.00.00或以上
  11. iDRAC的IP地址已经加入/etc/ansible/hosts

搭建NFS服务并挂载到本地

这里以ubuntu为例

1
2
3
4
5
6
7
8
9
10
11
12
13
#安装NFS组件
root@Ansible:~# apt install nfs-common nfs-kernel-server

#定义NFS服务
root@Ansible:~# echo '/opt/fwtest *(rw,sync,no_root_squash)' >> /etc/exports

#查看NFS服务
root@Ansible:~# showmount -e localhost
Export list for localhost:
/opt/fwtest *

#挂载到本地
root@Ansible:~# mount 127.0.0.1:/opt/fwtest /mnt

把需要的固件和驱动程序包目录上传到NFS的文件夹,在挂载目录可以看到,并具有读写权限

编写Playbook

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
- hosts: test
connection: local
name: Update Firmware Inventory
gather_facts: False

tasks:
- name: Update firmware from a repository on a Network Share
dellemc_install_firmware:
idrac_ip: "172.16.0.10"
idrac_user: "$USER"
idrac_pwd: "$PASSWORD"
share_name: "$NFS_IP:/fwtest"
share_user: "$NFS_SHAREUSER"
share_pwd: "$NFS_SHAREUSER_PASSWORD"
share_mnt: "/mnt"
job_wait: True
reboot: True

写好之后

1
ansible-playbook -vv dell_server.yml

会自动生产作业队列任务

不出意外的话,就等着服务器自动重启,升级固件就好。

PS:一台机器写一个task

0%