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
相关推荐
zmjjdank1ng3 小时前
什么是Ansible 清单
服务器·自动化·ansible
从零开始的ops生活3 小时前
【Day 73】Linux-自动化工具-Ansible
linux·运维·服务器
黄沐阳3 小时前
网络产品报价指南--S5735系列交换机
运维·服务器·网络·智能路由器
陌路203 小时前
Linux 12mybash的实现
linux
WnHj3 小时前
带密码加密机制的自动 FTP 拉取脚本
linux·运维·服务器·网络
脑子缺根弦3 小时前
辉视融合服务器:强劲驱动电视信息发布,直播点播流畅运行,赋能高效传播
linux·运维·服务器
。TAT。3 小时前
Linux - 命令行参数与环境变量
linux·学习
qq_339191143 小时前
aws ec服务器设置密码登录,ec服务器root登录 aws服务器初始化配置
服务器·github·aws
zl_dfq3 小时前
Linux 之 【基本指令 与 shell命令以及运行原理】
linux