Ansible Role修改IP地址与主机名

以下是基于Ansible Role修改IP地址与主机名的实现方法:

修改IP地址

  • 创建Role目录结构 :假设Role名为change_ip,目录结构如下:

    复制代码
    /etc/ansible/roles/change_ip
    ├── files
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    │   └── ifcfg-eth0.j2
    └── vars
        └── main.yml
  • 编写vars/main.yml文件:定义IP地址等相关变量,例如:

    复制代码
    ip_address: "192.168.1.100"
    netmask: "255.255.255.0"
    gateway: "192.168.1.1"
  • 编写templates/ifcfg-eth0.j2文件:创建网络配置文件模板,根据实际情况修改接口名称等:

    复制代码
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR={{ ip_address }}
    NETMASK={{ netmask }}
    GATEWAY={{ gateway }}
  • 编写tasks/main.yml文件 :使用template模块将模板文件渲染到目标主机的网络配置文件中,并重启网络服务:

    复制代码
    - name: Configure network interface
      template:
        src: ifcfg-eth0.j2
        dest: /etc/sysconfig/network-scripts/ifcfg-eth0
      notify: restart network
    - name: Restart network service
      service:
        name: network
        state: restarted
      when: ansible_os_family == "RedHat"
  • 编写handlers/main.yml文件:定义重启网络服务的handler:

    复制代码
    - name: restart network
      service:
        name: network
        state: restarted

修改主机名

  • 创建Role目录结构 :假设Role名为update_hostname,目录结构如下:

    复制代码
    /etc/ansible/roles/update_hostname
    ├── files
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    └── vars
        └── main.yml
  • 编写vars/main.yml文件:定义主机名变量,例如:

    复制代码
    hostname: "new_hostname"
  • 编写tasks/main.yml文件 :使用hostname模块修改主机名:

    复制代码
    - name: Set hostname
      hostname:
        name: "{{ hostname }}"
  • 编写handlers/main.yml文件:通常修改主机名不需要额外的handler。

调用Role

  • 创建启动Role的Playbook文件,例如change_config.yml

    复制代码
    - hosts: all
      become: yes
      roles:
        - change_ip
        - update_hostname
  • 执行Playbook:

    复制代码
    ansible-playbook change_config.yml
相关推荐
代码对我眨眼睛6 小时前
Ubuntu 系统 NVIDIA 显卡驱动自动化安装全流程
linux·ubuntu·自动化
xiong2learning6 小时前
Linux虚拟机无法使用u盘的一种可能-- 重新下载open-vm-tools + open-vm-tools-desktop解决
linux
LCG元6 小时前
实战:一次完整的网站故障排查记录(从用户访问到数据库)
linux
xuyanqiangCode6 小时前
Ubuntu二进制安装Apache Doris(2.1版本)
linux·ubuntu·apache
Yue丶越6 小时前
【Python】基础语法入门(四)
linux·开发语言·python
木童6626 小时前
Nginx 深度解析:反向代理与负载均衡、后端Tomcat
linux·运维·nginx
数据牧羊人的成长笔记7 小时前
Hadoop 分布式计算MapReduce和资源管理Yarn 2
开发语言·php
CheungChunChiu7 小时前
Android 系统中的 NTP 服务器配置与选择逻辑详解
android·运维·服务器
赖small强7 小时前
【Linux 网络基础】网络通信中的组播与广播:基础概念、原理、抓包与应用
linux·网络·broadcast·组播·广播·multicast
陌路207 小时前
Linux是如何收发网络包的?
linux·网络