用ansible-playbook批量修改主机名

因项目需求,新上架了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: ''

执行日志: 

执行结果:

查看网卡文件,配置文件修改成功。批量修改网卡成功

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只晨兴夜不得寐的运维人

你的打赏,是我今晚餐桌上的鸡腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值