Ansible中Roles的实战使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible中Roles的实战使用相关的知识,希望对你有一定的参考价值。

项目实现功能

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

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

    注:同步过程需要输入yes和各自的root密码即可;
    完成后可直接ssh [email protected] 就可以无密码登录上去了
        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

技术分享图片
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服务属主,属组为变量

技术分享图片

④定义变量的值(供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

技术分享图片

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

    ansible-playbook  app_role.yml

以上是关于Ansible中Roles的实战使用的主要内容,如果未能解决你的问题,请参考以下文章

[原创]实战之Ansible生成Apache多主机配置

自动化运维工具-Ansible的Roles的使用

ansible 条件,循环,roles用法简述

自动化运维工具Ansible之Roles测验详解

自动化运维工具Ansible之Roles测验详解

Ansible中Roles的使用