ansible 使用roles简单部署LAMP平台

news2024/10/11 22:25:57

目录

一、了解roles目录

二、基于构建LAMP平台创建roles目录

1、在192.168.115.148创建目录

2、书写php的测试页面

3、编写httpd角色的main.yml文件

4、编写mysql角色的main.yml文件

6、编写lamp的playbook

7、启动剧本

8、访问


一、了解roles目录

在Ansible中,roles是一种组织和复用任务和变量的方式。Roles是一种可重用的模块化结构,用于将相关的任务、变量和处理逻辑组合在一起,以便在不同的剧本(playbook)中重复使用。

通过使用roles,可以将复杂的任务分解成更小的、可管理的部分,并使剧本更具可读性和可维护性。Roles还可以促进代码的复用,因为可以将角色在不同的剧本中重复使用。

一个role通常由以下组成:

1. 任务(tasks):包含要执行的操作步骤。这些任务可以是与特定角色相关的任何操作,例如安装软件、配置文件、启动服务等。

2. 变量(vars):存储角色所需的变量。这些变量可以在角色的任务中使用,以根据不同的需求进行自定义。

3. 文件(files):包含角色所需的文件。这些文件可以是配置文件、脚本文件等。

4. 模板(templates):包含用于生成配置文件等的模板文件。模板文件通常包含一些可自定义的变量,以便在生成文件时根据需要进行替换。

5. 处理器(handlers):定义角色相关的处理程序,用于在特定事件发生时触发操作。例如,在配置文件更改后重新启动服务。

通过将相关的任务、变量和文件组织在一起,roles提供了一种结构化的方式来管理和组织复杂的配置和部署任务。它们使剧本更易于编写、理解和维护,并促进了在不同的剧本中重用和分享配置和部署逻辑。

roles/
├── role_name/                # role的名称
│   ├── defaults/             # 存放变量默认值的目录
│   │   └── main.yml          # 变量默认值文件
│   ├── tasks/                # 存放任务文件的目录
│   │   └── main.yml          # 任务文件
│   ├── templates/            # 存放模板文件的目录
│   │   └── template.j2       # 模板文件
│   ├── vars/                 # 存放特定角色变量的目录
│   │   └── main.yml          # 特定角色变量文件
│   ├── handlers/             # 存放处理器文件的目录
│   │   └── main.yml          # 处理器文件
│   ├── files/                # 存放文件的目录
│   │   └── file.txt          # 文件
│   ├── meta/                 # 存放描述文件的目录
│   │   └── main.yml          # 描述文件
│   └── README.md             # role的说明文件
└── playbook.yml              # 包含roles的Playbook文件

二、基于构建LAMP平台创建roles目录

实验环境:

192.168.115.148  :  安装ansible、部署LAMP

192.168.115.149  : 部署LAMP

192.168.115.151  : 部署LAMP

1、在192.168.115.148创建目录

cd /etc/ansible/roles/
mkdir -p {httpd,mysql,php}/{files,tasks,handlers,templates,vars,meta}
touch {httpd,mysql,php}/{tasks,handlers,vars,meta}/main.yml
tree
######################################################################
[root@localhost roles]# tree
.
├── http
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   ├── templates
│   └── vars
├── mysql
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   ├── templates
│   └── vars
└── php
    ├── files
    ├── handlers
    ├── meta
    ├── tasks
    ├── templates
    └── vars

2、书写php的测试页面

vim /etc/index.php
<?php
    phpinfo();
?>

3、编写httpd角色的main.yml文件

vim /etc/anseble/roles/http/tasks/mian/yml
---
- name: 安装httpd
  yum: name=httpd state=present
- name: 分发php测试页面
  copy: src=/index.php dest=/var/www/html/index.php
- name: 启动httpd、设为开机自启
  service: name=httpd state=started enabled=yes
  

vim /etc/ansible/roles/http/hardlers/mian.yml
---
- name: restart httpd
  shell: systemctl restart httpd

4、编写mysql角色的main.yml文件

vim /etc/ansible/roles/mysql/tasks/main.yml
---
- name: 安装mysql
  shell: yum -y install mariadb mariadb-server
- name: 启动mariadb,并设为开机自启
  service: name=mariadb state=started enabled=yes

5、编写php角色的main.yml文件

vim /etc/ansible/roles/php/tasks/main.yml
---
- name: 安装php及依赖包
  yum: name=php,php-gd,php-ldap,php-odbc,php-pear,php-xml,php-xmlrpc,php-mbstring,php-snmp,php-soap,curl,curl-devel,php-bcmath,php-mysql state=present
  notify: restart httpd


vim /etc/ansible/roles/php/hardlers/mian.yml
---
- name: restart httpd
  shell: systemctl restart httpd

6、编写lamp的playbook

vim /etc/ansible/lamp.yml
---
- hosts: group
  remote_user: root
  roles:
    - http
    - mysql
    - php

7、启动剧本

ansible-playbook /etc/ansible/lapm.yml

执行结果

8、访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/993159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MultipartFile是什么

Multipart是一种file的类型 在我们进行文件上传时所发出的请求&#xff0c;我们页面对请求格式有明确的要求: 1.post提交表单方式 2.编码格式enctype必须是muitipart/form-data&#xff0c;这种格式适合传输数据量大的二进制数据文件 3.类型必须是file类 流程举例&#xf…

开源药店商城系统源码比较:哪个适合你的药品电商业务

在构建药品电商业务时&#xff0c;选择适合的药店商城系统源码是至关重要的决策之一。开源药店商城系统源码提供了快速入门的机会&#xff0c;但在选择之前&#xff0c;您需要仔细考虑您的需求、技术要求和可扩展性。本文将比较几个流行的开源药店商城系统源码&#xff0c;以帮…

追溯网络安全本源,原生安全范式框架v1.0外滩大会正式发布

9月8日&#xff0c;2023外滩大会网络安全分论坛在上海举行。论坛由蚂蚁集团和《信息安全研究》杂志社联合主办&#xff0c;以“开启原生安全范式&#xff0c;护航网络空间安全”为主题。会上蚂蚁集团与浙江大学网络空间安全学院重磅首发了一项引领性网络安全成果 “原生安全范式…

什么?你还不会打包给运维?!那快来看看

目录 一、首先是JAVA打包 我们只需要用maven打包即可&#xff0c;生成文件为xxxx.jar 二、Vue打包 而打包是运行 npm run build 只要把 dist 给运维就行了 PS&#xff1a;如果是线上运行&#xff0c;那你要注意 env这个文件&#xff01;&#xff01;&#xff01; ​编辑…

进程间通信(IPC)的方法:命名管道

使用管道时&#xff0c;一个进程的输出可成为另外一个进程的输入。 命名管道(Named pipe或FIFO)是一种类似于管道的特殊文件&#xff0c;但在文件系统上有一个名称&#xff0c;它允许以先进先出(FIFO, first in, first out)的方式存储有限数量的数据。它的使用类似于消息…

(STM32H5系列)STM32H573RIT6、STM32H573RIV6、STM32H573ZIT6嵌入式微控制器基于Cortex®-M33内核

一、应用 工业&#xff08;PLC、工业电机控制、泵和压缩机&#xff09; 智能家居&#xff08;空调、冰箱、冰柜、中央警报系统、洗衣机&#xff09; 个人电子产品&#xff08;键盘、智能手机、物联网标签、跟踪设备&#xff09; 智能城市&#xff08;工业通信、照明控制、数字…

2023秋冬系列丨追求本真的自然纯粹之美

2023年08月&#xff0c;上海&#xff0c;ZESH泽尚&#xff0c;中国轻奢皮具品牌宣布推出2023全新秋冬系列包袋&#xff0c;以“自然之道&#xff0c;纯粹之美”为主题重新定义东方美学。品牌建立之初就坚持贯彻东方美学设计与精湛制作工艺融合的理念。此次秋冬系列从中式禅宗学…

EagleSDR USB HAT FT600

给EagleSDR做了个USB 3.0的子卡&#xff0c;采用FT600方案&#xff0c;实物如下&#xff1a; 用FT600DataStreamerDemoApp测试&#xff0c;速度如下&#xff1a; 由于FT600是16bit的接口&#xff0c;如果用FT601的32bit接口&#xff0c;性能应该还会有大幅提升。 测试代码很简…

通过Idea或命令将本地项目上传至git

通过Idea或命令将本地项目上传至git 一、Git创建仓库 1、登录Gitee账号&#xff0c;点击新建 2、填写如下相关信息&#xff0c;点击创建 3、在此处可以复制项目链接 二、Idea配置和解绑git&#xff0c;提交项目 1、idea打开项目&#xff0c;操作如下 2、在弹框里选择…

【监控系统】Promethus整合Alertmanager监控告警邮件通知

【监控系统】Promethus整合Alertmanager监控告警邮件通知 Alertmanager是一种开源软件&#xff0c;用于管理和报警监视警报。它与Prometheus紧密集成&#xff0c;后者是一种流行的开源监视和警报系统。Alertmanager从多个源接收警报和通知&#xff0c;并根据一组配置规则来决定…

Linux中的用户和用户组

su和exit命令 su命令就是用于账户切换的系统命令&#xff0c;其来源英文单词:Switch User 语法: su [-] [用户名] - 符号是可选的&#xff0c;表示是否在切换用户后加载环境变量 &#xff08;建议带上&#xff09;参数:用户名&#xff0c;表示要切换的用户&#xff0c;用户名也…

怎么提高自己当众讲话的能力?

当众讲话是一项重要的沟通技能&#xff0c;它可以帮助你在各种场合中表达自己的观点、影响他人&#xff0c;并建立自信。虽然对很多人来说&#xff0c;当众讲话可能是一项挑战&#xff0c;但通过一些实践和技巧&#xff0c;你可以提高自己的当众讲话能力。下面是一些方法&#…

Java开发之Redis核心内容【面试篇 完结版】

文章目录 前言一、redis使用场景1. 知识分布2. 缓存穿透① 问题引入② 举例说明③ 解决方案④ 实战面试 3. 缓存击穿① 问题引入② 举例说明③ 解决方案④ 实战面试 4. 缓存雪崩① 问题引入② 举例说明③ 解决方案④ 实战面试 5. 缓存-双写一致性① 问题引入② 举例说明③ 解决…

第3章_瑞萨MCU零基础入门系列教程之开发环境搭建与体验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

滚珠螺杆螺母的加工方法

螺母就是螺帽&#xff0c;与螺栓或螺杆拧在一起用来起紧固作用的零件&#xff0c;螺母的用途十分广泛&#xff0c;那么它的加工方法&#xff0c;你了解吗&#xff1f;接下来&#xff0c;我们一起来看一下。 1、车削&#xff1a;最早使用的加工方法&#xff0c;加工螺母的工艺路…

Openlayers 教程 - feature(图形要素)点击和双击事件

Openlayers 教程 - feature&#xff08;图形要素&#xff09;点击和双击事件 核心代码完整代码&#xff1a;在线示例 地图中图形要素&#xff08;Feature&#xff09;的点击事件非常常用&#xff0c;曾经通过给整个地图绑定点击事件&#xff0c;然后判断图形要素&#xff08;Fe…

@Autowired自动装配对象为null,但是通过ApplicationContext注入的时候,却成功的注入了

错误&#xff1a;运行test1的时候&#xff0c;报bookController空指针异常 但是当我通过ApplicationContext注入的时候&#xff0c;却成功的注入了 原因是因为被注入的属性不能为静态属性&#xff01;&#xff01; 扩展&#xff1a; 1.一般而言&#xff0c;标注有(Component|…

RK3568-mpp(Media Process Platform)媒体处理软件平台

第一章 MPP 介绍 1.1 概述 瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的通用媒体处理软件平台。 该平台对应用软件屏蔽了芯片相关的复杂底层处理,其目的是为了屏蔽不同芯片的差异,为使用者提供统一的视频媒体处理接口(Medi…

树,二叉树的概念与结构

&#x1f449;树&#xff0c;二叉树的概念与结构 1️⃣ .树的概念及结构1.1树的概念1.2树的相关概念1.3树的实现方式1.4树的实际用途 2️⃣.二叉树的概念及结构2.1二叉树的概念2.2特殊二叉树2.3二叉树的概念2.4二叉树的存储结构 所属专栏&#xff1a;初始数据结构❤️ &#x1…

【STL】模拟实现map和set {带头结点的红黑树;红黑树的核心结构;红黑树的迭代器;红黑树的插入和查找;map和set的封装}

模拟实现map和set map和set是红黑树的两种不同封装形式&#xff0c;底层使用同一颗泛型结构的红黑树。set是红黑树的K模型&#xff1b;map是红黑树的KV模型。 下面的代码和讲解着重体现红黑树的底层实现和map\set上层封装的衔接。关于二叉搜索树性质&#xff0c;map和set的介…