因项目需求,新上架了42台Dell物理机,接线,安装RHEL7.9操作系统后,需要手动通过带外配置好带内IP后,要进行初始化设置。包括1、主机名2、其他网卡设置3、服务器基线配置
本文通过自动化工具,ansible-playbook,批量对42台服务器设置主机名,修改网卡配置,配置操作系统基线。实现高效配置,提高配置效率,减少出错概率。
1、批量修改主机名,先上代码
host文件如下,配置带内管理IP及机器账号密码
[part1]
10.101.0.10
10.101.0.11
10.101.0.12
10.101.0.13
[part2]
10.101.0.14
10.101.0.15
10.101.0.16
10.101.0.17
[all:vars]
ansible_ssh_user=root
ansible_shh_pass=password
yaml文件如下,使用变量{{ hostnames[inventory_hostname] }}来获取自定义变量中的主机名
例如:hostnames['192.168.10.12']="ONE_1_1"
使用shell模块,在服务器上执行hostnamectl set-hostname ONE_1_1
- name: change hostname
hosts: all
become: yes
gather_facts: no
vars:
hostnames:
"192.168.10.12": "ONE_1_1"
"192.168.10.13": "ONE_1_2"
"192.168.10.14": "ONE_2_1"
"192.168.10.15": "ONE_2_2"
tasks:
- name: set hostname
shell: hostnamectl set-hostname "{{ hostnames[inventory_hostname] }}"
执行结果
执行完成后 执行#bash 重新加载环境变量,主机名修改成功,批量修改主机名成功。
2、批量修改网卡配置
根据管理IP、业务IP对照表,我们可以获得配置清单。编写ansible脚本如下。默认网卡配置文件需要修改项如下表:
修改前 | 修改后 |
BOOTPROTO="dhcp" | BOOTPROTO="static" |
ONBOOT="no" | ONBOOT="yes" |
IPADDR=10.172.16.X | |
NETMASK= 255.255.255.0 | |
GATEWAY= 10.172.16.254 |
因为掩码和网关为已知,直接配置上即可。IP地址使用变量替换的方法,根据主机IP配置第二网卡IP。{{ iplist[inventory_hostname] }} ,其中inventory_hostname为hosts文件内每个连接的IP,如果iplist内没有连接IP 执行时会报错。
- name: set-network.yaml
hosts: all
become: yes
gather_facts: no
vars:
networkfile: "/etc/sysconfig/network-scripts/ifcfg-ens33"
iplist:
"10.101.0.10": "10.172.16.10"
"10.101.0.11": "10.172.16.11"
"10.101.0.12": "10.172.16.12"
"10.101.0.13": "10.172.16.13"
"10.101.0.14": "10.172.16.14"
"10.101.0.15": "10.172.16.15"
"10.101.0.16": "10.172.16.16"
"10.101.0.17": "10.172.16.17"
tasks:
- name: set network
lineinfile:
path: "{{ networkfile }}"
regexp: 'BOOTPROTO="?dhcp"?'
line: 'BOOTPROTO="static"'
backrefs: yes
- name: set network
lineinfile:
path: "{{ networkfile }}"
regexp: 'ONBOOT="?no"?'
line: 'ONBOOT="yes"'
backrefs: yes
- name: set network
blockinfile:
path: "{{ networkfile }}"
insertafter: 'ONBOOT="yes"'
block: |
IPADDR= {{ iplist[inventory_hostname] }}
NETMASK= 255.255.255.0
GATEWAY= 10.172.16.254
#marker: ''
执行日志:
执行结果:
查看网卡文件,配置文件修改成功。批量修改网卡成功