欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 2024年8月20日(playbook nginx任务 mariadb)

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

2024/11/29 13:19:58 来源:https://blog.csdn.net/weixin_70751333/article/details/141346293  浏览:    关键词: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


 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com