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

  • Roles简介:

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

  • 在一个playbook中创建使用Roles的步骤:
  • 1.创建以roles命令的目录。
    *    mkdir /etc/ansible/roles/ -p    #yum装完默认就有
    2.创建全局变量目录。
    *   mkdir /etc/ansible/group_vars/ -p
    *   touch /etc/ansible/group_vars/all     #文件名自己定义,引用的时候注意
    3.在roles目录中分别创建以各角色名称命令的目录,如httpd。
    *    mkdir /etc/ansible/roles/common -p
    4.在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,但不可以不创建。
    *   mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
    *   mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
    5.在每个角色的handlers、tasks、meta、defaults、vars目录下创建main.yml文件,千万不能自定义。
    *    touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
    *    touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
    6.在playbook文件中,调用各角色。
         vi /etc/ansible/site.yml
        -  hosts: webserver
           remote_user: root
           roles:
             - httpd
             - mysql
    

    roles内各目录含义:

    * files:用来存放由copy模块或script模块调用的文件。
    * templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
    * tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。   mail.yml 默认执行程序
    * handlers:此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
    * vars:此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
    * defaults:此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
    * meta:此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。

    实验项目:使用roles搭建LAMP架构

    1.首先创建httpd、mysql、php角色名称目录,并在其目录下创建files、handlers、tasks、templates、meta、defaults和vars目录。
    mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
    mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
    mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
    
    touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
    touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
    touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

    2.编写httpd模块:
     写一个简单的tasks/main.yml :
    *  vi /etc/ansible/roles/httpd/tasks/main.yml
    - name: ensure apache is at the late st version
      yum: pkg={{ pkg }} state=latest
    定义变量:可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中
    * vi /etc/ansible/roles/httpd/vars/main.yml
      pkg: httpd


    3.编写mysql模块:
    * vi /etc/ansible/roles/mysql/tasks/main.yml
    - name: ensure mysql is at the latest version
      yum: pkg={{ pkg }} state=latest
    
    * vi /etc/ansible/roles/mysql/vars/main.yml
    pkg: mariadb*


    4.编写php模块:
    * vi /etc/ansible/roles/php/tasks/main.yml
    - name: ensure php is at the latest version
      yum: pkg={{ pkg }} state=latest
    
    * vi /etc/ansible/roles/php/vars/main.yml
      pkg: php


    5.编写roles示例:
    * vi /etc/ansible/lamp.yml
    --
    - hosts: webserver
      remote_user: root
      roles:
       - httpd
       - mysql
       - php


    6.执行playbook:


    7.在webserver上的httpd站点目录下编写php测试首页,并通过浏览器进行访问:


    总结:使用ansible的roles功能把紧密连接的服务全部拆开,可以降低软件的耦合性。大大简化软件项目的部署实施,并且能够方便后期维护,有利于项目的推广使用。

    原文地址:http://blog.51cto.com/13721050/2311280

    时间: 2024-10-05 05:57:55

    掌握Ansible角色(Roles)自动化部署配置LAMP架构的相关文章

    详解Ansible(Roles)自动化部署配置LAMP架构

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

    自动化运维Ansible之Roles部署配置LAMP架构

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

    MDT 2013 从入门到精通之自动化部署配置

    在上文配置好系统分区信息,MDT部署所需的基本配置内容已经初步配置完成,现在我们就可以通过MDT进行部署了.在开始部署操作系统之前,我们需要对Windows PE启动引导进行简单自动化配置,从而方便后续操作系统部署的顺利进行,需要补充的是:在未集成SQL之前,这里的自定制设置是整个自动化部署过程中最重要的环节.接下来就为大家带来今日的自动化部署配置.客户端部署过程中信息系统日志的远程存放(Logs日志的远程存放是为了方便大家在分发失败的时候更好的排错).控制台的更新内容. 一.启动信息调整: 1

    Web服务器群集之LAMP平台部署(LAMP架构搭建)

    Web服务器群集之LAMP平台部署(LAMP架构搭建) 涉及:Linux/Centos7系统 Apache Mysql PHP 一.前言 ? 上一篇文章主要讲述了有关Web与HTTP协议的基础知识,有了这一基础知识理论的奠定,将对我们此次搭建部署LAMP平台的实验有所帮助. ? LAMP架构是非常成熟的企业网站应用模式之一,其指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境.LAMP是一个缩写词--Linux操作系统.Apache网站服务器.MySQL数据库服务器

    ansible深入理解和操作——03(roles详解+搭建LAMP架构)

    ansible roles 在实际的工作当中,一个完整的项目实际上是很多功能体的组合,如果将所有的功能写在一个playbook中会存在如代码耦合程度高.playbook长而维护成本大.灵活性低等一系列的问题.使用roles能巧妙的解决这一系列的问题.roles是ansible1.2版本后加入的新功能,适合于大项目playbook的编排架构. ansible roles目录结构 roles能够根据层次型结构自动装载变量文件.task以及handlers等.简单来讲,roles就是通过分别将变量.文

    自动化运维工具ansible 角色Roles介绍(三)

    一.角色(roles)介绍角色定制:roles 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web.db.ha 时或不同服务器组合不同的应用就需要写多个yml文件.很难实现灵活的调用. roles 用于层次性.结构化地组织playbook.roles 能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用 roles只需要在playbook中使用include指令即可.简单来讲,roles就是通过分别将变量(vars).文件(file).任务(tasks).模块

    在ubuntu上配置LAMP架构

    1. 安装MySQL /* ubuntu默认进入系统是普通用户 所以在真实工作中,我们会得到root的授权. 所以我们需要用sudo做一切只有root才能完成的操作. */ [[email protected] ~]# cd /usr/local/src [[email protected] src]# wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.47-linux2.6-x86_64.tar.gz [[email protecte

    19,Ansible角色

    1,ansible角色 ansible官方指定的一套统一规范规则叫角色比如我们可以把配置nginx过程抽象成一个nginx角色 同理像redis也是一样可以理解为一个角色,它的配置过程有ansible固定模板 [[email protected] ~]# cd /etc/ansible/roles/ [[email protected] /etc/ansible/roles]# tree . ├── rsync #角色名称 │ ├── files #存放需要copy的文件 │ ├── handl

    部署LAMP架构及其应用

    部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps #将RPM方式安装的php及相关依赖包(如果已存在)卸载 ~]# rpm -ivh zlib-devel #安装光盘自带的支持压缩的依赖包 ~]# rpm -ivh libxm