ansible剧本中的角色
1 roles角色
1.1 roles角色的作用?
可以把playbook剧本里的各个play看作为一个角色,将各个角色打的tasks任务、vars变量、template模版和copy、script模块使用的相关文件等内容放置在指定角色的目录里统一管理,在需要的时候可在playbook中使用roles角色直接调用即可。
1.2 roles的目录格式
roles/ #角色总目录,其每个子目录就是一个角色目录nginx/ #相当于playbook中的每一个play主题,目录名就是角色名files/ #存放copy、script模块调用的文件templates/ #存放template模块调用的 XXX.j2 模板文件tasks/main.yml #定义此角色的tasks普通任务列表handlers/main.yml #定义此角色通过notify触发时执行的handlers处理器任务列表vars/main.yml #定义此角色用的自定义变量defaults/main.yml #定义此角色用的默认变量(一般不用)meta/main.yml #定义此角色的元数据信息和依赖关系mysql/.... php/....


1.3 调用roles
vim XXX.yaml - name:hosts:remote_user:roles:- nginx- mysql- php ansible-playbook XXX.yaml

2 playbook调用roles分布式安装LNMP
2.1 管理端安装ansible并配置主机清单,与远程主机建立免交互
管理端安装 ansible
yum install -y epel-release //先安装 epel 源 yum install -y ansible

配置主机清单
cd /etc/ansible vim hosts [webservers] #配置组名 192.168.111.22 #组里包含的被管理的主机IP地址或主机名(主机名需要先修改/etc/hosts文件) [dbservers] 192.168.111.33 [ccservers] 192.168.111.44

配置密钥对验证
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa yum install -y sshpass sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.111.22 sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.111.33 sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.111.44

2.2 部署nginx主机配置
创建nginx主机目录和yml文件
在命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /opt/ansible/roles/nginx/{files,templates,tasks,handlers,vars,defaults,meta}
在角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /opt/ansible/roles/nginx/{defaults,vars,tasks,meta,handlers}/main.yml

配置tasks文件
vim /opt/ansible/roles/nginx/tasks/main.yml
- name: disable firewalldservice: name=firewalld state=stopped enabled=no
- name: disable selinuxcommand: '/usr/sbin/setenforce 0'ignore_errors: true
- name: copy nginx repocopy: src=nginx.repo dest=/etc/yum.repos.d/
- name: install nginxyum: name={{pkg}} state=present
- name: create root dirfile: path={{root_dir}} state=directory
- name: prepare nginx config filetemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.confnotify: "reload nginx"
- name: start nginxservice: name={{svc}} state=started enabled=yes
~

配置vars文件
vim /opt/ansible/roles/nginx/vars/main.yml nginx_addr: 192.168.111.22 nginx_port: 80 server_name: www.ky33.com root_dir: /var/www/html php_addr: 192.168.111.22 php_port: 9000 pkg: nginx svc: nginx

配置templates模版中nginx用于支持php服务的配置文件
vim /opt/ansible/roles/nginx/templates/nginx.conf.j2
worker_processes auto;
events {use epoll;worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen {{nginx_addr}}:{{nginx_port}};server_name {{server_name}};charset utf-8;location / {root {{root_dir}};index index.php index.html;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}location ~ \.php$ {root {{root_dir}};fastcgi_pass {{php_addr}}:{{php_port}};fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

安装rpcbind和nfs并配置用于php挂载
yum -y install rpcbind nfs vim /etc/exports /usr/share/nginx/html 192.168.111.0/24(rw) showmount -e Export list for localhost.localdomain: /usr/share/nginx/html 192.168.111.0/24 systemctl restart rpcbind nfs

配置php服务文件用于测试
cd /usr/share/nginx/html/ vim index.php <?php phpinfo; ?>

2.3 部署mysql主机配置
创建mysql主机目录和yml文件
在命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /opt/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}
在角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /opt/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml

配置tasks文件
vim /opt/ansible/roles/mysql/tasks/main.yml
- include: "init.yml"
- name: remove mariadbyum: name=mariadb* state=absent
- name: copy mysql repocopy: src=mysql-community.repo dest=/etc/yum.repos.d/
- name: modify mysql reporeplace: path=/etc/yum.repos.d/mysql-community.repo regexp="gpgcheck=1" replace="gpgcheck=0"
- name: install mysqlyum: name={{pkg}} state=present
- name: start mysqlservice: name={{svc}} state=started enabled=yes
- name: init mysqlshell: passd=$(grep "password" /var/log/mysqld.log | awk '{print $NF}') && mysql -uroot -p"$passd" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';" && mysql -uroot -pAdmin@123 -e "grant all privileges on *.* to root@'%' identified by 'Admin@123' with grant option;"ignore_errors: true

配置防火墙文件
vim /opt/ansible/roles/mysql/tasks/init.yml - name: disable firewalldservice: name=firewalld state=stopped enabled=no - name: disable selinuxcommand: '/usr/sbin/setenforce 0'ignore_errors: true

配置vars文件
vim /opt/ansible/roles/mysql/vars/main.yml pkg: mysql-server svc: mysqld

2.4 部署php主机配置
创建php主机目录和yml文件
在命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /opt/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta}
在角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /opt/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

配置tasks文件
vim /opt/ansible/roles/php/tasks/main.yml
- name: install phpyum: name=php72w,php72w-cli,php72w-common,php72w-devel,php72w-embedded,php72w-gd,php72w-mbstring,php72w-pdo,php72w-xml,php72w-fpm,php72w-mysqlnd,php72w-opcache state=present
- name: create php useruser: name={{user_name}} shell=/sbin/nologin create_home=no
- name: modify php config filereplace: path=/etc/php.ini regexp=";date.timezone =" replace="date.timezone = Asia/Shanghai"notify: "reload php-fpm"
- name: modify user and group in www.confreplace: path=/etc/php-fpm.d/www.conf regexp="apache" replace="{{user_name}}"notify: "reload php-fpm"
- name: modify listen addr in www.confreplace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1:9000" replace="{{php_addr}}"notify: "reload php-fpm"
- name: modify allowed_clients in www.confreplace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1" replace="{{nginx_addr}}"notify: "reload php-fpm"
- name: start php-fpmservice: name={{svc}} state=started enabled=yes
- name: create php root dirfile: path=/var/www/html state=directory
- name: mount nfsmount: src="192.168.111.22:/usr/share/nginx/html" path=/var/www/html fstype=nfs state=mounted opts="defaults,_netdev"


配置vars文件
vim /opt/ansible/roles/php/vars/main.yml user_name: php php_addr: 192.168.111.44:9000 nginx_addr: 192.168.111.22 svc: php-fpm

2.5 配置lnmp启动剧本
vim site.yml - hosts: webserversremote_user: rootroles:- nginx - hosts: dbserversremote_user: rootroles:- mysql - hosts: ccserversremote_user: rootroles:- php

执行脚本



相关文章:
ansible剧本中的角色
1 roles角色 1.1 roles角色的作用? 可以把playbook剧本里的各个play看作为一个角色,将各个角色打的tasks任务、vars变量、template模版和copy、script模块使用的相关文件等内容放置在指定角色的目录里统一管理,在需要的时候可在playbook中使…...
weblog项目开发记录--SpringBoot后端工程骨架
知识点查漏补缺 跟着犬小哈做项目实战时发现好多知识点都忘了,还有一些小的知识点可能之前没学过,记录下!顺带整理下开发流程。 完整项目学习见犬小哈实战专栏 SpringBoot后端工程骨架 搭建好的工程骨架中实现了很多基础功能,…...
axios封装终极版实现token无感刷新及全局loading
前言 关于axios全局loading的封装博主已经发过一次了,这次是在其基础上增加了token的无感刷新。 token无感刷新流程 首次登录的时候会获取到两个token(AccessToken,RefreshToken)持久化保存起来(localStorage方案&a…...
推荐一个内网穿透工具,支持Windows桌面、Linux、Arm平台客户端
神卓互联是一款常用的内网穿透工具,它可以将本地服务器映射到公网上,并提供域名或子域名给外部访问。神卓互联具有简单易用、高速稳定的特点,支持Windows桌面版、Linux版、Arm版客户端,以及硬件等。 神卓互联内网穿透技术简介 企…...
【linux】vim多行操作命令
文章目录 1. vim多行同时修改2. vim复制/移动多行3. vim删除多行4. vim设置缩进空格 回顾:vi/vim常用命令 1. vim多行同时修改 (1) ctrl v (2) 按 下箭头,选择多行 (3) shift i,…...
vue-router钩子函数有哪些?都有哪些参数?
Vue.js是一款流行的JavaScript框架,它提供了大量的工具和特性,使得web前端开发更加高效和灵活。其中之一就是Vue-router,它是Vue.js官方路由插件,可以实现前端路由的管理和控制。在使用Vue-router时,我们可以利用钩子函…...
基于JavaWeb开发的小区车辆登记系统计算机毕设[附源码]
基于JavaWeb开发的小区车辆登记系统计算机毕设[附源码] 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统…...
【开源】SpringBoot框架开发高校宿舍调配管理系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统展示四、核心代码4.1 查询单条个人习惯4.2 查询我的室友4.3 查询宿舍4.4 查询指定性别全部宿舍4.5 初次分配宿舍 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的…...
高压开关柜实现无线测温监测的关键点
一、概述 近年来,电厂自动化、信息化飞速发展,加快了对高压开关柜内的温度检测技术的研究。一系列的开关柜的无线测温监测技术也因此应运而生,并且发挥着越来越重要的作用。高压开关柜是发电厂、变电站、动力车间最重要的电气设备,…...
在线图片生成工具:定制化占位图片的利器
title: 在线图片生成工具:定制化占位图片的利器 date: 2024/2/20 14:08:16 updated: 2024/2/20 14:08:16 tags: 占位图片网页布局样式展示性能测试响应式设计在线生成开发工具 在现代的网页设计和开发中,占位图片扮演着重要的角色。占位图片是指在开发过…...
闭包----闭包的理解、优点
1、闭包的理解 闭包就是能够读取其他函数内部变量的函数。 由于在 javascript 中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理 解成 “ 定义在一个函数内部的函数 “ 。 所以,在本质上,闭包是将…...
jenkins的nmp install命令无法下载包
问题:在jenkin的流水线脚本中执行到:npm install命令后无法下载前端依赖包 1、进到jenkins的工作目录,一般在底层为/var/lib/jenkins/workspace/任务名称 cd /var/lib/jenkins/workspace/xkc处理方式: # 查看镜像源 npm config …...
Collection集合体系(ArrayList,LinekdList,HashSet,LinkedHashSet,TreeSet,Collections)
目录 一.Collection 二.List集合 三.ArrayList集合 四.LinkedList集合 五.Set集合 六.hashSet集合 七.LinkedHashSet集合 八.TreeSet集合 九.集合工具类Collections 集合体系概述 单列集合:Collection代表单列集合,每个元素&#…...
Job 和 DaemonSet
一、Job 1、Job 背景问题 K8s 里,最小的调度单元是 Pod,如果直接通过 Pod 来运行任务进程,会产生以下几种问题: ① 如何保证 Pod 内进程正确的结束? ② 如何保证进程运行失败后重试? ③ 如何管理多个任…...
C++ 二维前缀和 子矩阵的和
输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2 ,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n,m,q 。 接下…...
第六届计算机科学与技术在教育中的应用国际会议(CSTE 2024)
2024年第六届计算机科学与技术在教育中的应用国际会议(CSTE 2024)将于4月19-21日在中国西安举行。此次会议由陕西师范大学主办,陕西师范大学教育学部承办。在前五届成功举办的基础上,CSTE 2024将继续关注计算机科学与技术在教育领…...
Vue3学习——标签的ref属性
在HTML标签上,可以使用相同的ref名称,得到DOM元素ref放在组件上时,拿到的是组件实例(组件defineExpose暴露谁,ref才可以看到谁) <script setup lang"ts"> import RefPractice from /compo…...
数字化转型导师坚鹏:政府数字化转型之数字化技术
政府数字化转型之数字化技术 ——物联网、云计算、大数据、人工智能、虚拟现实、区块链、数字孪生、元宇宙等综合解析及应用 课程背景: 数字化背景下,很多政府存在以下问题: 不清楚新技术的发展现状? 不清楚新技术的重要应…...
go build
go build 作用:将Go语言程序和相关依赖编译成可执行文件 go build 无参数编译 生成当前目录名的可执行文件并放置于当前目录下,如: go build go build文件列表 编译同目录的多个源码文件时,可以在 go build 的后面提供多个文件…...
力扣238和169
一:238. 除自身以外数组的乘积 1.1题目 1.2思路 1.3代码 //左右乘表 int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int* answer (int*)malloc(numsSize*sizeof(int));int i 0;int left[numsSize],right[numsSize];left[0] 1;for(i 1;…...
告别复制粘贴:用影刀RPA+飞书多维表格,我把每周的销售数据汇总从2小时缩到5分钟
告别复制粘贴:用影刀RPA飞书多维表格实现销售数据自动化革命 每周五下午,市场部的张经理总要面对同样的噩梦:从七个不同渠道导出销售数据,手动核对格式差异,复制粘贴到汇总表,再计算各类指标。这个重复劳动…...
带你读顶会论文丨基于溯源图的APT攻击检测
带你读顶会论文丨基于溯源图的APT攻击检测 **摘要:**本次分享主要是作者对APT攻击部分顶会论文阅读的阶段性总结,将从四个方面开展。 本文分享自华为云社区《[论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结》,作者:eastmoun…...
高纯水系统如何保障锂电池生产良率?
在锂电池制造过程中,生产用水纯度直接关联产品性能与安全。随着新能源汽车与储能产业快速发展,行业对电池一致性与稳定性的要求持续提升,超纯水已成为核心制程环节的关键辅材。一、锂电池生产用水标准 锂电池生产涉及正负材料制备、浆料调配、…...
本科论文降AI率花多少钱合适?各档工具对比
每年毕业季都有同学问:降AI率要花多少钱?买个工具值不值?这篇把费用账算清楚,让你心里有数。 先算清楚你实际需要处理多少字 很多人有个误区,以为论文AI率30%就要处理30%的字数。实际上不是的。 实际需要处理的字数…...
嘎嘎降AI和去AIGC哪个更适合文科论文?深度对比评测
嘎嘎降AI和去AIGC哪个更适合文科论文?深度对比评测 选降AI工具看三点:达标率、价格、处理后文本质量。 按这标准我花了一周研究主流工具。结论先说:嘎嘎降AI(www.aigcleaner.com)最适合大多数人——4.8元一篇&#x…...
GOERTEK SPL06-001 LGA-8 压力传感器
关键特性 压力范围:300...1100hPa(99000米...-500米,相对于海平面) 温度范围:-40...85C 供电电压:1.7.. 3.6V (VDD) ,1.2... 3.6V (VDDIO)封装:带金属盖的LGA封装 小尺寸:2.5mmx2.0mm;超薄:0.95mm高度 相对精度:0.06hPa,相当于0.5米 绝对精度:典型值1hPa…...
AI技术原理--AI上下文窗口:为什么AI没有真正的记忆
99%的人都理解错了一个问题:AI真的会记得你吗? 很多人信誓旦旦跟我说:昨天我跟GPT聊了好久,今天一打开还能接着聊,这不是记忆是什么? 但如果我告诉你,它根本就不记得你——你是不是直接懵了&…...
汽车行业空气动力学仿真Fluent的license分点方案
汽车行业空气动力学仿真Fluent的License分点方案你是绝非老是在项目高峰时段发现Fluent的License不够用了,而且平时又有数来空闲许可在浪费?你是不光是也在担心合规风险,搞不好一不小心就超了额度,被软件商追着要钱?实…...
WeChatMsg:3步永久保存微信聊天记录的完整解决方案
WeChatMsg:3步永久保存微信聊天记录的完整解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…...
小鹅通重磅升级|AI Agent 能力全面护航,私域智能经营新范式
*文中配图及虚拟数据仅作效果展示 随着人工智能越来越贴近经营场景,小鹅通紧扣各位商家的实际需求,在原有产品基础上,以AI Agent为核心,完成了新一轮产品升级——在原有功能基础上,引入场景skills,并通过sk…...
