回顾:
playbook
1、调用剧本
ansible-playbook /etc/ansible/playbook/book001.yml
2、编写剧本
---
- hosts: s1
remote_user: root
tasks:
- name: 卸载httpd
yum: name=httpd state=absent
- name: 安装nginx
yum: 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.conf
notify:
- restart nginx
- name: 启动服务
service: name=nginx state=started enabled=yes
handlers:
- name: restart nginx
service: name=nginx state=restarted
...
3、基本的语法
---
- hosys:
remote:
tasks:
- name: 说明
调用模块
notify:
- handlername
- handlers:
-name: handlername
模块语句
...
一·、roles
1、roles介绍
roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独 的⽬录中,并可以便捷地调⽤它们的⼀种机制。
假设我们要写⼀个playbook来安装管理lamp环境,那么这个 playbook就会写很⻓。所以我们希望把这个很⼤的⽂件分成多个功能 拆分, 分成apache管理,php管理,mysql管理,然后在需要使⽤的时候 直接调⽤就可以了,以免重复写。就类似编程⾥的模块化的概念,以 达到代码复⽤的效果。
2、创建roles的⽬录结构
files:⽤来存放由copy模块或script模块调⽤的⽂件。
tasks:⾄少有⼀个main.yml⽂件,定义各tasks。
handlers:有⼀个main.yml⽂件,定义各handlers。
templates:⽤来存放jinjia2模板。
vars:有⼀个main.yml⽂件,定义变量。
meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。
[root@M0 nginx]# vim /etc/ansible/playbook/roles.yml
---
- hosts: s1
remote_user: root
roles:
- nginx
...
[root@M0 nginx]# ansible-playbook /etc/ansible/playbook/roles.yml
练习:使用role来实现lnmp
nginx改配置 8080
mariadb中创建eleme数据库
创建表 t_user
id int 主键约束,自增 编号
username varchar 非空约束 账号
password varchar 非空约束 密码
remark varchar 没有约束 账号权限说明
[root@M0 ~]# vim /etc/ansible/roles/mariadb/tasks/main.yml
---
- name: 卸载mariadb
yum: name=mariadb,mariadb-server,mariadb-devel state=absent
- name: 安装mariadb
yum: name=mariadb,mariadb-server,mariadb-devel state=present
- name: 启动mariadb服务
service: name=mariadb state=started enable=yes
- name: 执行脚本,创建数据库和数据表
scirpt: /etc/ansible/scirpt/dbtable.sh
[root@M0 ~]# 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
配置一主两从的mysql服务器:
要求:
(1)将步骤罗列出来,并且截图
(2)服务端口3306,不要关闭防火墙
(3)在mysql中添加eleme数据库设置为utf8mb4
(4)添加表t_user
(5)添加两行记录
(6)使用mycat为三台数据库设置负载均衡(读写分离)
(7)配置静态资源服务器,为前端提供图片和视频
(8)部署两台java17.0.3环境的后端服务器,端口8080,不关防火墙
(9)部署nginx代理java服务器,负载均衡策略为轮询,端口为80