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

原文地址:http://blog.51cto.com/13769014/2122388

时间: 2024-11-06 03:45:24

Ansible中Roles的实战使用的相关文章

Ansible中Roles的使用

Roles的介绍 Roles是ansible自1.2版本引入的新特性,用于层次性,结构化地组织playbook,roles能够根据层次型结构自动自动装在变量文件.tasks以及handlers 等.要使用roles只需要在playbook中使用include指令即可.简单来讲,roles就是通过分别将变量.文件.任务.模板及处理器放置于单独的目录中 并可以便捷地include他们的一种机制,角色一般用于主机构建服务的场景中,但也可以是用于构建守护进程等场景中. 创建roles的步骤 创建以rol

Ansible 之 roles使用

1  概述 角色(roles):把playbook根据功能,如handler,tasks等分门别类的放在在各自的子目录下,形成一个集合,就是角色,建议把角色放在固定的目录下,目录可以ansible的配置文件中的roles_path来定义. role模板查看链接:https://github.com/ansible/ansible-examples 2  配置介绍 以层级结构组织Playbook的核心元素,成为roles. 核心元素包括以下几点: Hosts:主机 Tasks:任务列表 Varia

掌握Ansible角色(Roles)自动化部署配置LAMP架构

Roles简介: Ansible为了层次化.结构化地组织Playbook,使用了角色(roles).Roles能够根据层次型结构自动装载变量文件.task以及handlers等.简单来讲,roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中.? 在一个playbook中创建使用Roles的步骤: 1.创建以roles命令的目录. * mkdir /etc/ansibl

ansible基础-roles

一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以部署某个服务为单元作为一个role ,然后将这些服务单元(role)放在一个roles目录下.主playbook文件通过调用roles目录下的role,来实现各种灵活多变的部署需求. 本节主要为大家介绍下roles的目录结构.引用方法及其他特性. 二 创建与目录结构 2.1 创建roles 通常创建

Spark3000门徒第9课IDEA中开发Spark实战总结

今晚听了王家林老师的第9课IDEA中开发Spark实战,课后作业是:在Idea中编写广告点击排名的程序并提交集群测试, IDEA社区版本就够用,Ultimate没必要还要钱 程序如下: object WordCountCluster { def main(args: Array[String]){ /** * 第一步:创建spark的配置对象SparkConf,设置Spark程序的运行时的配置信息 * */ val conf = new SparkConf() //创建SparkConf对象 c

Ansible的roles功能(五)

针对大型项目使用Roles进行编排,更便利 目录结构编排 一键安装httpd并提供服务 创建目录结构 [[email protected] ansible]# mkdir -p roles/httpd/{tasks,files,vars} [[email protected] ansible]# cd roles/httpd/tasks [[email protected] roles]#touch httpd/{files/main.yml,tasks/{groupadd.yml,instal

Linux系统中DHCP服务实战

Linux系统中DHCP服务实战部署 一.实验要求 1.将系统的主机名改成s01.benet.com 2.搭建一台dhcp服务器为局域网分配IP地址,要求分配192.168.40.0/24 3.为boss保留192.168.40.188地址 二.实验环境 虚拟机VMware Workstation11.0 RED HET 6.5 三.实验步骤 1.将系统的主机名改成s01.benet.com 2.搭建dhcp服务.为局域网分配IP地址 3.测试主机分配地址效果 4.给boss分配192.168.

Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/pR_4sY0cJLs/优酷:http://v.youku.com/v_show/id_

Scala 深入浅出实战经典 第49课 Scala中Variance代码实战(协变)

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群 DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③