通过roles实现lamp以及其实例

通过 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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过Ansible Roles工具在服务端部署OpenGauss数据库可以实现自动化的安装和配置过程。Ansible Roles是一种组织和管理Ansible任务的方式,可以将相关的任务和配置文件打包成一个可重用的角色,方便在不同的环境中部署。 要在服务端部署OpenGauss数据库,可以按照以下步骤进行操作: 1. 安装Ansible:首先需要在控制节点上安装Ansible。可以使用操作系统的包管理器进行安装,或者通过pip安装最新版本的Ansible。 2. 创建Ansible Playbook:创建一个Ansible Playbook文件,用于定义部署OpenGauss数据库的任务和配置。在Playbook中,可以使用Ansible Roles来组织任务。 3. 创建Ansible Role:创建一个Ansible Role,用于定义OpenGauss数据库的安装和配置任务。在Role中,可以包含多个任务和配置文件,以及变量和模板文件等。 4. 编写任务和配置:在Ansible Role中,编写任务和配置文件来完成OpenGauss数据库的安装和配置。可以使用Ansible提供的模块来执行各种操作,如安装软件包、创建配置文件、启动服务等。 5. 配置变量和模板:使用变量和模板文件来实现可配置化的部署。可以将一些常用的配置参数定义为变量,在部署时通过修改变量值来自定义配置。 6. 执行Playbook:使用ansible-playbook命令执行Playbook,将OpenGauss数据库的安装和配置任务发送到目标主机执行。Ansible会自动连接到目标主机,并按照定义的任务顺序执行。 7. 验证部署结果:执行完Playbook后,可以验证OpenGauss数据库是否成功安装和配置。可以登录到目标主机上,检查相关的日志文件和配置文件,以及尝试连接和操作数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值