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

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

猜你喜欢

转载自blog.51cto.com/13769014/2122388