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

  • Roles简介
    Ansible为了层次化、结构化地组织Playbook,使用了角色(roles)。Roles能够根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。
    ?
  • 创建Roles
    创建roles时一般需要以下步骤:首先创建以roles命名的目录。然后在roles目标下分别创建以个角色名称命令的目录,如websevers等,在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录。最后在Playbook文件中调用各角色进行使用
  • roles内各目录含义解释
  • files:用来存放由copy模块或script模块调用的文件。
    templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
    tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
    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
    • 编写httpd模块
    • 安装httpd服务
    • 修改httpd.conf配置文件
      # vim /etc/ansible/roles/httpd/tasks/main.yml
          - name: ensure apache is at the latest version
            yum: pkg={{ servicenames}} state=latest
            template: src=/etc/ansible/templates/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
          - name: restart httpd server
            service: name=httpd enabled=true state=restarted
    • 定义变量
      # vim /etc/ansible/roles/httpd/vars/main.yml
      # servicenames: httpd
    • 编写mysql模块
    • 并且定义变量
      # vi /etc/ansible/roles/mysql/tasks/main.yml
      - name: ensure mysql is at the latest version
        yum: pkg={{ servicenames}} state=latest
      
      # vi /etc/ansible/roles/mysql/vars/main.yml
      servicenames: mariadb*
    • 编写php模块
    • 并且定义变量
      # vi /etc/ansible/roles/php/tasks/main.yml
      - name: ensure php is at the latest version
        yum: pkg={{ servicenames}} state=latest
      
      # vi /etc/ansible/roles/php/vars/main.yml
      servicenames: php
    • 修改httpd配置文件模板
    • 监听IP 和域名 设为变量 方便其他主机使用这个模块

    • 在/etc/ansible/hosts文件中设置变量
    • 创建Playbook文件调用上面各角色安装LAMP
      [[email protected] ansible# vim /etc/ansible/site.yml
      ---
      - hosts: abc
          remote_user: root
          roles:
           - httpd
           - mysql
           - php
      
      [[email protected] ansible]# ansible-playbook site.yml --syntax-check  //检测语法
      
      playbook: site.yml
      [[email protected] ansible]# ansible-playbook site.yml    //执行剧本

    ?

    • 测试验证
    • 去192.168.200.129主机上写一个PHP测试页面
      # echo "<?php phpinfo();?>" > /var/www/html/index.php
      # systemctl restart httpd
    • 打开浏览器输入192.168.200.129/index.php

    原文地址:http://blog.51cto.com/13630803/2154767

    时间: 2024-09-30 15:31:33

    详解Ansible(Roles)自动化部署配置LAMP架构的相关文章

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

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

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

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

    Jenkins+Ansible+Gitlab自动化部署三剑客

    最近一直在学习Ansible的一些playbook的写法, 所以一直没有怎么更新, 想到目前大家对诸如saltstack, docker, Ansible等自动化部署相关的工具很感兴趣, 但又苦于没有可学习的中文实例, 这里我就把我这几个月所接触到目前国外比较流行的部署经验给大家分享一下. 首先给大家介绍的是Ansible, 恩, 重要的问题说三遍, 不是Saltstack, Ansible作为一个python写的自动化部署工具, 确实较之前我所接触的Chef, saltstack, puppe

    详解Server 2012 R2部署WSUS4.0之四

    在前面的文章中,我们介绍了如何进行WSUS4.0的部署以及如何利用WSUS进行补丁分发.但是现在我们要考虑这样一种情况,在一个大型企业中,一台WSUS服务器是满足不了所有用户的更新需求的,这时我们就需要进行WSUS服务器的链式部署,即分别设置WSUS的上游服务器和下游服务器.所谓上游服务器就是从微软下载更新,而下游服务器则从上游服务器下载更新.我们在最开始部署的第一台WSUS是roleserver,所以在此案例中,他就是我们的上游服务器.在下面的服务器名中填写roleserver.contoso

    jQuery Mobile的默认配置项详解,jQuery Mobile的中文配置api,jQuery Mobile的配置说明,配置大全

    学习jQuery Mobile也有一段时间了,越来越上手了,也越来越喜欢他了.我根本就没有理由拒绝他的好.这里我有分享一下我对它的配置项的使用说明一下. 看代码解释: $(document).live("pageinit",function(event){ $.mobile.loadingMessage = "正在加载数据,请稍候......"; $.mobile.pageLoadErrorMessage="很抱歉,系统好像再打小瞌睡......"

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

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

    详解 Windows 下 Eclipse CDT 配置 C/C++ 编译环境

    其实 windows 下,C.C++ IDE 也不少,但许多IDE的 UI 和用户体验基本都停留在上个世纪,除了 eclipse CDT 和 visual studio,但后者现在是个巨无霸,安装文件都 3 个多G,而且这货安装容易删除难,但 eclipse CDT 就不一样了,熟悉 java eclipse 的同学能快速适应~ 1.Eclipse及CDT的安装 到Eclipse的官方网站http://www.eclipse.org上下载Eclipse. 离线安装CDT.CDT的全称是C/C++

    Kafka详解之二、如何配置Kafka集群

    Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置 单节点:一个broker的集群 单节点:多个broker的集群 多节点:多broker集群 一.单节点单broker实例的配置 1.首先启动zookeeper服务 Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可通过 whereis kafka命令查找到): [[email protect

    (转)web.config详解之在文件中配置网站默认页面

    在<configuration></configuration>中添加下面的配置 <system.webServer>        <defaultDocument>            <files>                <clear />                <add value="index.aspx" />                <add value=&qu