通过roles实现lamp以及其实例

devtools/2024/12/23 5:35:12/
通过 roles 实现 lamp
需定制三个⻆⾊ : httpd,mysql,php
1 : 创建 roles ⽬录及⽂件 , 并确认⽬录结构
master# cd /etc/ansible/roles/
master# mkdir -p
{httpd,mysql,php}/{files,tasks,handlers,templates,v
ars,meta}
master# touch
{httpd,mysql,php}/{tasks,handlers,vars,meta}/main.y
ml
master# yum install tree -y
master# tree /etc/ansible/roles/
/etc/ansible/roles/
"## httpd
$ "## files
$ "## handlers
$ $ %## main.yml
$ "## meta
$ $ %## main.yml
$ "## tasks
$ $ %## main.yml
$ "## templates
$ %## vars
$ %## main.yml
"## mysql
$ "## files
$ "## handlers
$ $ %## main.yml
$ "## meta
$ $ %## main.yml
$ "## tasks
$ $ %## main.yml
$ "## templates
$ %## vars
$ %## main.yml
%## php
"## files
"## handlers
$ %## main.yml
"## meta
$ %## main.yml
"## tasks
$ %## main.yml
"## templates
%## vars
%## main.yml
第2步: 准备httpd服务器的主⻚⽂件,php测试⻚和配置⽂件等
master# echo "test main page" >
/etc/ansible/roles/httpd/files/index.html
master# echo -e "<?php\n\tphpinfo();\n?>" >
/etc/ansible/roles/httpd/files/test.php
master# yum install httpd -y
按需求修改配置⽂件后,拷⻉到httpd⻆⾊⽬录⾥的files⼦⽬录
master# vim /etc/httpd/conf/httpd.conf
master# cp /etc/httpd/conf/httpd.conf
/etc/ansible/roles/httpd/files/

第3步: 编写httpd⻆⾊的main.yml⽂件
 

---
- name: 安装httpd
yum: name=httpd,httpd-devel state=present
- name: 同步httpd配置⽂件
copy:
src=/etc/ansible/roles/httpd/files/httpd.conf
dest=/etc/httpd/conf/httpd.conf
notify: restart httpd
- name: 同步主⻚⽂件
copy:
src=/etc/ansible/roles/httpd/files/index.html
dest=/var/www/html/index.html
- name: 同步php测试⻚
copy:
src=/etc/ansible/roles/httpd/files/test.php
dest=/var/www/html/test.php
- name: 启动httpd并开机⾃启动
service: name=httpd state=started enabled=yes
4 : 编写 httpd ⻆⾊⾥的 handler
master# vim
/etc/ansible/roles/httpd/handlers/main.yml
---
- name: restart httpd
service: name=httpd state=restarted
5 : 编写 mysql ⻆⾊的 main.yml ⽂件
---
- name: 安装mysql
yum: name=mariadb,mariadb-server,mariadb-devel
state=present
- name: 启动mysql并开机⾃启动
service: name=mariadb state=started enabled=yes
6 : 编写 php ⻆⾊的 main.yml ⽂件
master# vim /etc/ansible/roles/php/tasks/main.yml
---
- name: 安装php及依赖包
yum: name=php,php-gd,php-ldap,php-odbc,phppear,php-xml,php-xmlrpc,php-mbstring,php-snmp,phpsoap,curl,curl-devel,php-bcmath,php-mysql
state=present
notify: restart httpd
7 : 编写 lamp playbook ⽂件调⽤前⾯定义好的三个⻆⾊
master# vim /etc/ansible/playbook/lamp.yaml
---
- hosts: group1
remote_user: root
roles:
- httpd
- mysql
- php
8 : 执⾏ lamp playbook ⽂件
master# ansible-playbook
/etc/ansible/playbook/lamp.yaml
拓展案例 : 通过 roles 实现 lamp 并安装 discuz
1 : 创建 roles ⽬录及⽂件 , 并确认⽬录结构
master# cd /etc/ansible/roles/
master# mkdir -p
{httpd,mysql,php}/{files,tasks,handlers,templates,v
ars,meta}
master# touch
{httpd,mysql,php}/{tasks,handlers,vars,meta}/main.y
ml
2 : 准备 httpd 相关⽂件
master# ls /etc/ansible/roles/httpd/files/
Discuz_X3.2_SC_UTF8.zip Discuz相关软件包
httpd.conf 配置好的httpd.conf配置⽂
件
3 : 编写 httpd ⻆⾊的 main.yml ⽂件
master# vim /etc/ansible/roles/httpd/tasks/main.yml
- name: 安装httpd相关软件包
yum: name=httpd,httpd-devel state=latest
- name: 同步配置⽂件
copy:
src=/etc/ansible/roles/httpd/files/httpd.conf
dest=/etc/httpd/conf/httpd.conf
notify: restart httpd
- name: 拷⻉discuz压缩包
copy:
src=/etc/ansible/roles/httpd/files/Discuz_X3.2_SC_U
TF8.zip dest=/tmp/
- name: 解压并mv⽹站⽂件到httpd家⽬录
shell: rm -rf /var/www/html/* && rm -rf /test/
&& mkdir -p /test/ && unzip
/tmp/Discuz_X3.2_SC_UTF8.zip -d /test/ &> /dev/null
&& mv /test/upload/* /var/www/html/ && chown -R
apache.apache /var/www/html/
# 上⾯的命令有点多,可以写成脚本,然后使⽤script模块来调⽤执
⾏
- name: 启动httpd并开机⾃启动
service: name=httpd state=started enabled=on
4 : 编写httpd ⻆⾊⾥的 handler
master# vim
/etc/ansible/roles/httpd/handlers/main.yml
---
- name: restart httpd
service: name=httpd state=restarted
5 : 编写 mysql ⻆⾊的 main.yml ⽂件
master# vim /etc/ansible/roles/mysql/tasks/main.yml
---
- name: 安装mariadb相关软件包
yum: name=mariadb-server,mariadb-devel
state=latest
- name: 启动mariadb服务并设置开机⾃启动
service: name=mariadb state=started enabled=on
- name: 执⾏建库脚本
script: /etc/ansible/roles/mysql/files/create.sh
6 : 编写 mysql 的建库脚本
master# vim
/etc/ansible/roles/mysql/files/create.sh
#!/bin/bash
mysql << EOF
create database if not exists discuz default
charset=utf8;
grant all on discuz.* to 'discuz'@'localhost'
identified by '123';
flush privileges;
EOF
7 : 编写 php ⻆⾊的 main.yml ⽂件
master# vim /etc/ansible/roles/php/tasks/main.yml
---
- name: 安装php相关软件包
yum: name=php,php-gd,php-ldap,php-odbc,phppear,php-xml,php-xmlrpc,php-mbstring,php-snmp,phpsoap,curl,curl-devel,php-bcmath,php-mysql
state=present
notify: restart httpd
8 : 编写 lamp playbook ⽂件调⽤前⾯定义好的三个⻆⾊
master# vim /etc/ansible/playbook/lamp.yaml
---
- hosts: group1
remote_user: root
roles:
- httpd
- mysql
- php
9 : 执⾏ lamp playbook ⽂件
master# ansible-playbook
/etc/ansible/playbook/lamp.yaml


http://www.ppmy.cn/devtools/99030.html

相关文章

C# x Unity面向对象补全计划 设计模式 之 实现一个简单的有限状态机

一个简单的有限状态机可以有如下内容 1.状态基类&#xff08;定义基本状态的方法&#xff0c;如进入&#xff08;Enter&#xff09;、执行&#xff08;Execute&#xff09;和退出&#xff08;Exit&#xff09;&#xff0c;同时可以在此声明需要被管理的对象&#xff09; 2.具体…

0x01 GlassFish 任意文件读取漏洞复现

参考文章&#xff1a; 应用服务器glassfish任意文件读取漏洞 - SecPulse.COM | 安全脉搏 fofa 搜索使用该服务器的网站 网络空间测绘&#xff0c;网络空间安全搜索引擎&#xff0c;网络空间搜索引擎&#xff0c;安全态势感知 - FOFA网络空间测绘系统 "glassfish"&…

软件测试面试题与经验分享【附文档】

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软…

Python与React结合:构建高效前端与后端的综合性技术探索

目录 一、技术选型与优势 1.1 React的优势 1.2 Python的优势 二、项目搭建 2.1 创建React项目 2.2 编写React组件 2.3 配置路由 三、后端服务实现 3.1 安装Python依赖 3.2 编写Python爬虫脚本 3.3 运行Python后端服务 四、前后端数据交互 4.1 跨域问题处理 4.2 验…

springdatajpa解决postgresql数据库字段驼峰命名问题

为了满足其他服务需求&#xff0c;数据库字段使用驼峰命名&#xff0c;但是在执行sql时发现字段被自动转成了下划线命名&#xff0c;如deviceId&#xff0c;被转成了device_id&#xff0c;但数据库字段为deviceId 解决方法&#xff1a; 网上的解决方法如下 配置文件加上一下…

设计资讯 | 这款受数学方程启发的平板桌:配集成黑胶唱片机和无线充电器

早在 1903 年&#xff0c;英国数学家亨利欧内斯特杜德尼就想出了将正方形变形为等边三角形的方法。这个技巧是将正方形分割成可重新排列的四个不同形状。这种方法经过一个多世纪的各种应用&#xff0c;仍然具有价值。 1986 年&#xff0c;建筑师 David Ben-Grunberg 和他的艺术…

Python 的主流版本:Python 3.x

Python 的主流版本&#xff1a;Python 3.x Python 是一种流行的编程语言&#xff0c;它具有简洁、易于学习和广泛应用等特点。在 Python 的发展过程中&#xff0c;已经发布了多个主要版本&#xff0c;每个版本都带来了新的功能和改进。下面&#xff0c;我们将介绍当前 Python …

qt creator自动运行单元测试

qt creator自动运行单元测试 工具-选项-Testing-General&#xff0c;找到Automatically run&#xff0c;选项卡选择All。