Ansible批量给戴尔服务器安装系统

土豪公司到了一批服务器嘛,新的旧的都有,百八十台吧,也不算多。

固件已经刷了,接下来得安装系统,想用个高效的方案,于是乎再次祭出Ansible。

先用一台来测试,成功了再铺开大面积使用。

前提条件

  • 新的戴尔服务器的iDRAC的IP得提前改好,不然出厂时默认都一样,都接到网络中时会冲突。
  • 自动安装的系统镜像提前要制作好,Ubuntu的preseed,CentOS的KickStart,自己参照操作系统官网文档做好功课。
  • iDRAC的用户名和密码建议统一设置,写playbook的时候,你就知道好处了。密码复杂度得符合安全要求。
  • 其他的可以参考 Dell-EMC-Ansible-Modules-for-iDRAC的文档,Github上有。

操作系统镜像

我这里用的是Ubuntu16.04 定制可以参考 官方的安装指南,定制自己seed文件,替换光盘中的preseed目录下的ubuntu-server.seed文件,文件名可以在内核参数中给定,如下面我是用默认的。

文档:
Automating the installation using preseeding

光盘中的isolinux.cfg文件也要编辑一下,位于光盘中的isolinux目录下。参考谷歌上的方法。

1
2
3
4
5
6
7
8
9
10
11
12
default autoinstall
prompt 0
timeout 100

menu title Custom Live CD
menu background splash.png
menu color title 1;37;44 #c0ffffff #00000000 std

label autoinstall
menu label autoinstall - auto install ubuntu
kernel /install/vmlinuz
append initrd=/install/initrd.gz file=/cdrom/preseed/ubuntu-server.seed boot=install debian-installer/locale=en_US console-setup/ask_detect=false keyboard-configuration/layoutcode=us automatic-ubiquity splash --

最后用UltraISO这两个文件放到对应位置替换原文件即可。

系统安装光盘的网络共享

用windows共享文件夹或者linux搭建一个NFS都可以,不过经测试,windows共享文件夹稳定些。

Ansible操作主机挂载用 下面命令挂载共享

1
mount -t cifs //$IP/iso /mnt -o username=$USER,password=$PASSWORD,vers=2.0

然后操作执行填好的playbook即可

ansible-playbook -vvv yourplaybook.yaml

playbook

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
- hosts: dell
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: "$iDRACIP"
idrac_user: "xxxxx"
idrac_pwd: "xxxxxxxxx"
share_name: "$NFSIP:/fwtest"
share_user: "xxxx"
share_pwd: "xxxxx"
share_mnt: "/mnt"
job_wait: True
reboot: True

多台机器写多个task,这里是例子。

执行效果

是不是很酷?

0%