当前位置: 首页 > news >正文

2024年8月20日(playbook nginx任务 mariadb)

一、剧本部署nginx
[root@m0 ~]# mkdir /etc/ansible/playbook
[root@m0 ~]# vim /etc/ansible/playbook/nginx.yml 
---
-       hosts:          group02remote_user:    roottasks:-       name:   卸载httpdyum:    name=httpd      state=absent-       name:   安装nginxyum:    name=nginx      state=present-       name:   修改资源文件shell:  echo 'I am nginx,port is 80' > /usr/share/nginx/html/index.html-       name:   修改端口command:        sed -i '/listen/s/80/8080/g' /etc/nginx/nginx.confnotify:-       restart nginx-       name:   启动服务service:        name=nginx      state=started   enabled=yeshandlers:-       name:   restart nginxservice:        name=nginx      state=restarted    
二、roles(难点)

roles介绍

roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。

假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使用的时候直接调用就可以了,以免重复写。就类似编程里的模块化的概念,以达到代码复用的效果。

1、创建roles的目录结构

files:用来存放由copy模块或script模块调用的文件。
tasks:至少有一个main.yml文件,定义各tasks。
handlers:有一个main.yml文件,定义各handlers。
templates:用来存放jinjia2模板。
vars:有一个main.yml文件,定义变量。
meta:有一个main.yml文件,定义此角色的特殊设定及其依赖关系。

注意:在每个角色的目录中分别创建files,tasks,handlers,templates,vars和meta目录,用不到的目录可以创建为空目录.

[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 roles]# mkdir nginx
[root@m0 roles]# cd nginx/
[root@m0 nginx]# ls
[root@m0 nginx]# mkdir files
[root@m0 nginx]# mkdir tasks
[root@m0 nginx]# mkdir handlers
[root@m0 nginx]# mkdir templates
[root@m0 nginx]# mkdir vars
[root@m0 nginx]# mkdir meta[root@m0 nginx]# touch handlers/main.yml
[root@m0 nginx]# touch tasks/main.yml
[root@m0 nginx]# touch vars/main.yml
[root@m0 nginx]# tree
.
├── files
├── handlers
│   └── main.yml
├── meta
├── tasks
│   └── main.yml
├── templates
└── vars└── main.yml[root@m0 nginx]# vim /etc/ansible/playbook/test001.yml
---
-       hosts:          sremote_user:    rootroles:-       nginx[root@m0 nginx]# ansible-playbook /etc/ansible/playbook/test001.yml 
[root@m0 nginx]# ansible s -m yum -a 'name=nginx state=absent'[root@m0 nginx]# vim /etc/ansible/roles/nginx/tasks/main.yml 
---
-       name:   卸载httpdyum:    name=httpd      state=absent
-       name:   卸载nginxyum:    name=nginx      state=absent
-       name:   安装nginxyum:    name=nginx      state=present
-       name:   启动服务 service:        name=nginx      state=started   enabled=yes
...[root@m0 nginx]# ansible-playbook /etc/ansible/playbook/test001.yml[root@m0 nginx]# vim /etc/ansible/playbook/test001.yml
---
-       hosts:          sremote_user:    rootroles:-       nginx-       mysql
...[root@m0 nginx]# cp /etc/ansible/roles/nginx/ /etc/ansible/roles/mysql -r
[root@m0 nginx]# ansible-playbook /etc/ansible/playbook/test001.yml 
2、练习

使用role实现lnmp

nginx改配置 8080端口

mariadb中创建eleme数据库

创建表t_user

id                       int 编号 主键约束 自增         遍号

username          varchar 非空约束                 账号

password          varchar  非空约束                密码

remark              varchar  非空约束                账号权限说明

yum remove mariadb-libs-5.5.56-2.el7.x86_64

yum -y install mariadb
yum -y install mariadb-server
systemctl start mariadb.service
mysql

[root@m0 ~]# mysql << EOF
> create database if not exists eleme charset utf8mb4;
> use eleme;
> create table user(id int primary key auto_increment,username varchar(45) not null,password varchar(45) not null,remark varchar(45));
> quit
> EOF
[root@m0 ~]# mysql
[root@m0 ~]# vim /etc/ansible/roles/nginx/tasks/main.yml
---
-       name:   卸载mariadbyum:    name=mariadb,mariadb-server,mariadb-devel       state=absent-       name:   安装mariadbyum:    name=mariadb,mariadb-server,mariadb-devel       state=present-       name:   启动mariadbservice:        name=mariadb    state=started   enabled=yes-       name:   执行脚本,创建数据库和数据表script: /etc/ansible/script/dbtable.sh[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 roles]# mkdir mariadb
[root@m0 roles]# cd mariadb/
[root@m0 mariadb]# mkdir tasks
[root@m0 mariadb]# touch tasks/main.yml
[root@m0 mariadb]# vim /etc/ansible/playbook/test003.yml
---
-   hosts:          sremote_user:    rootroles:-    mariadb[root@m0 mariadb]# cd /etc/ansible/
[root@m0 ansible]# mkdir script
[root@m0 ansible]# vim /etc/ansible/script/dbtable.sh
#!/bin/bash
mysql << EOF
create database if not exists eleme charset utf8mb4;
use eleme;
create table user(id int primary key auto_increment,username varchar(45) not null,password varchar(45) not null,remark varchar(45));
quit
EOF[root@m0 ansible]# ansible-playbook /etc/ansible/playbook/test003.yml


 


http://www.mrgr.cn/news/8527.html

相关文章:

  • i.MX6裸机开发(8):中断
  • 微服务实战系列之玩转Docker(十二)
  • Golang | Leetcode Golang题解之第368题最大整除子集
  • GLUE数据集的预处理
  • (151)时序收敛--->(01)时序收敛一
  • 摄影曝光:曝光模式认知
  • Elasticsearch 安装 windows
  • RISC-V全志D1多媒体套件
  • Pytest学习总结
  • HarmonyOS 中的 Button 组件进阶应用与自定义样式
  • 爱吃香蕉的珂珂(LeetCode)
  • Javaweb学习之Vue实践小界面(四)
  • MySQL面试常问问题
  • JS 和 ES6 补充学习
  • 【spring boot自动配置】深入探讨 Spring Boot 自动配置:实现与机制
  • 混合动力汽车救援充电器 Midtronics XRC-3363
  • Docker 的基本管理
  • 蒙特卡洛应用:RTX 光线追踪算法 ReSTIR 原理
  • (javaweb)maven高级
  • 文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《极端冰雪天气下计及孤岛划分与融合的配电网故障恢复》