Ansible中Roles的实战使用

本文详细介绍使用Ansible自动化工具通过Playbook和Roles模块来批量部署HTTPD服务的过程。包括生成SSH密钥、配置主机清单、构建Roles框架、定义Handlers触发器规则、配置Tasks和Variables等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目实现功能

用playbook调用roles实现安装httpd服务
使用rools搭建,代码复用,便于日常维护管理

1. 在服务器端生成公钥,将公钥文件导入到客户端主机

    注:同步过程需要输入yes和各自的root密码即可;
    完成后可直接ssh root@192.168.109.142 就可以无密码登录上去了
        ssh-keygen  -P "" -f "/root/.ssh/id_rsa"
        ssh-copy-id 192.168.109.142
        ssh-copy-id 192.168.109.143

2. 配置ansible的主机清单,即把node1与node2主机添加到管理清单中

    egrep -v '(^$|^#)' /etc/ansible/hosts
    [websrvs]
    192.168.109.143
    192.168.109.142 
        上述基本环境搭建完成

3. 构建roles框架

此处因之前测试文件名冲突 文件夹命名为APP

Ansible中Roles的实战使用
4. 配置每个功能模块

    注:模块里面调用关系为相对路径,,相对于roles文件目录下

①定义handlers触发器规则

            注意handlers里定义的规则,命名为main.yml
            vim handlers/main.yml
                - name: restart service                                #指定触发器名称
                service: name=httpd state=restarted                  #触发条件后实现的功能

②将后续需要用到的文件复制到roles存放文件目录下

            cp /etc/httpd/conf/httpd.conf /data/ansible/roles/app/files/vhosts.conf

③定义模板文件(变量,循环,条件测试(when),迭代(with_items))

            此处示例:定义httpd服务属主,属组为变量

Ansible中Roles的实战使用

④定义变量的值(供roles模板文件调用)

    vim vars/main.yml
        username: app                   #赋值给模板文件里定义的变量
        groupname: apps                 #赋值给模板文件里定义的变量  

⑤配置每个task文件


vim tasks/group.yml
        - name: create group            #模块功能名称
        group: name=app system=yes    #创建APP组 设置为系统组  

vim tasks/user.yml
        - name: create user     #模块功能名称
            #创建app用户 属组为app 指定为系统用户 指定shell类型 
            user: name=app group=app system=yes shell=/sbin/nologin

vim tasks/yum.yml
        - name: install package         #模块功能名称
            yum: name=httpd               #安装httpd服务包

vim tasks/templ.yml
        - name: copy conf               #模块功能名称
            #指定调用的模块模板 复制到远程主机的绝对路径
            template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
            #调用触发条件,此处设置为配置文件更改后重启服务 
            notify: restart service

vim tasks/copyfile.yml
        - name: copy conf       #模块功能名称
            #指定本机文件   复制到远程主机的绝对路径    修改文件所有者(属主)为app复制并备份原文件  
            copy: src=vhosts.conf dest=/etc/httpd/conf.d/vhosts.conf owner=app backup=yes

vim tasks/start.yml
        - name: start service           #模块功能名称
            #指定服务名称 开启服务 开机自动启动服务  
            service: name=httpd state=started enabled=yes

5. 设置task执行顺序

    注:  定义执行顺序文件,命名规则为main.yml
             需写在tasks对应目录下,方便后续系统调用
    vim tasks/main.yml
        - include : group.yml                   #创建组
        - include : user.yml                    #创建用户
        - include : yum.yml                     #安装服务包
        - include : templ.yml                   #执行模板文件
        - include : copyfile.yml                #复制文件到管理主机 
        - include : start.yml                   #开启服务  .

6. 指定playbook(剧本文件)调用roles文件夹

    注:(playbook)剧本文件和roles角色文件夹属于平级关系
    vim app_role.yml
        - hosts: websrvs        #指定管理的主机IP
            remote_user: root     #指定用什么身份管理
            roles:
                - role: app         #指定执行某个服务集合 

7. 调试,检测是否有错误

    ansible-playbook -C app_role.yml

Ansible中Roles的实战使用

8. 使用ansible-playbook执行剧本文件

    ansible-playbook  app_role.yml

转载于:https://blog.51cto.com/13769014/2122388

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值