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
相关推荐
琥珀色糖8 分钟前
Linux makefile
linux·运维·服务器·makefile·make
2401_8949155315 分钟前
Geo 优化源码部署避坑指南:解决访问异常、定位失效、收录卡顿问题
java·服务器·后端·缓存·开源
whyutianict_vv15 分钟前
HCIE-Storage存储3.0排错题实战:归因框架与排查命令
linux·服务器·网络
小趴菜一只28 分钟前
linux权限维持
linux·运维·服务器
小张同学a.30 分钟前
ELK企业级日志分析平台3——ES数据备份 & 集群监控 & ELFK+Kafka 架构部署
linux·运维·elk·elasticsearch·架构·kafka·filebeat
JenKinJia35 分钟前
Pycharm中增加远程服务器解释器无法连接的问题
服务器·pycharm·github
神龙斗士24037 分钟前
Socket编程:客户端与服务器通信全解析(网络编程)
运维·服务器·网络·socket
小则又沐风a40 分钟前
负载均衡式在线OJ---------第二幕
linux·c++·后端
AC赳赳老秦1 小时前
官方技术文档聚合实践:用 OpenClaw 批量抓取开源项目文档,构建离线可检索技术知识库
java·运维·服务器·python·信息可视化·deepseek·openclaw
Zenova EdgeOS1 小时前
工业边缘 SDK 设计实战:从 API 到 Python/Go 多语言工程落地
python·golang·php