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

自动化运维工具一Ansible Roles实战

目录

一、Ansible Roles概述

1.1.roles官方的目录结构

1.2.Ansible Roles依赖关系

二、Ansible Roles案例实战

2.1.Ansible Roles NFS服务

2.2 Roles Memcached

2.3 Roles-rsync服务


一、Ansible Roles概述


之前介绍了 Playbook 的使用方法,对于批量任务的部署和操作非常方便,但是耦合度比较高,不便于模块化、层次化的复用,为了层次性、结构化地组织playbook,我们可以使用roles来更加高效地组织playbooks;roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。
 

1.1.roles官方的目录结构

roles├── test│   ├── README.md│   ├── defaults│   │   └── main.yml│   ├── files│   ├── handlers│   │   └── main.yml│   ├── meta│   │   └── main.yml│   ├── tasks│   │   └── main.yml│   ├── templates│   ├── tests│   │   ├── inventory│   │   └── test.yml│   └── vars│       └── main.yml

通过目录结构说明:

  • templates:template模块查找所需要模板文件的目录
  • tasks:定义task,role的基本元素,至少有一个名为main.yml的文件;其它的文件需要在此文件中通过include引入
  • handlers:至少有一个名为main.yml的文件;其它的文件需要在此文件中通过include引
  • vars:定义变量,至少有一个名为main.yml的文件;其它的文件需要在此文件中通过include引入
  • meta:定义当前角色的特殊设定及其依赖关系,至少有一个名为main.yml的文件,其它文件需在此文件中通过include引入
  • default:设定默认变量时使用此目录中的main.yml文件,比vars的优先级低

1.2.Ansible Roles依赖关系

roles允许您在使用role时自动引入其他 role。role依赖关系存储在role目录中meta/main.yml文件中。

例如:安装wordpress需要先确保nginx与PHP都能正常运行,此时可以在 wordpress的role中定义,依赖Nginx与PHP-fpm的roles。

[root@devops ~]# cat /root/roles/wordpress/meta/main.yml
---
dependencies:- { role: nginx }- { role: [php-fpm }

此时 wordpress 的role 会先执行 nginx的role、然后执行php-fpm的role,最后执行wordpress本身的role。


二、Ansible Roles案例实战


2.1.Ansible Roles NFS服务

[root@hdp101 roles]# cat  nfs/tasks/install.yml
- name: Install NFS-utils Serveryum: name=nfs-utils state=present[root@hdp101 roles]# cat  nfs/tasks/config.yml
- name: Configuration NFS-utils Servertemplate: src=./export.j2  dest=/etc/exports owner=root group=root mode=0644notify: Restart NFS Server[root@hdp101 roles]# cat  nfs/tasks/start.yml
- name: Start NFS Serverservice: name=nfs state=started enabled=yes[root@hdp101 roles]# cat  nfs/templates/export.j2
{{ nfs_dir }} 192.168.30.102(rw,all_squash,anonuid=666,anongid=666)
[root@hdp101 roles]#
[root@hdp101 roles]# cat group_vars/web01
nfs_dir: /data
[root@hdp101 roles]#
[root@hdp101 roles]# cat nfs-roles.yml
- hosts: web01roles:# nfs 就是刚才创建的目录- nfs
[root@hdp101 roles]#

NFS 文件夹目录树结构:

运行: 

2.2 Roles Memcached

如下配置启动memcache:

[root@hdp101 roles]# cat memcached/tasks/install.yml 
- name: Installed memcached Serveryum: name=memcached state=present
[root@hdp101 roles]# cat memcached/tasks/config.yml 
- name: Copy memcached server configurationtemplate: src=memcached.j2 dest=/root/sysMemConfignotify: Restart memcached server
[root@hdp101 roles]# cat memcached/tasks/start.yml 
- name: start memcached serverservice: name=memcached state=started enabled=yes
[root@hdp101 roles]# cat  memcached/handlers/main.yml 
- name: Restart memcached serverservice: name=memcached state=restarted
[root@hdp101 roles]# 
[root@hdp101 roles]# cat memcached/tasks/main.yml 
- include_tasks: install.yml
- include_tasks: config.yml
- include_tasks: start.yml
[root@hdp101 roles]# 
[root@hdp101 roles]# cat memcached/templates/memcached.j2 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb //2 }}"
OPTIONS=""

memecached 目录树结构

运行一下:

看看设置的内存大小

2.3 Roles-rsync服务

rsync 可以理解为 remote sync(远程同步),但它不仅可以远程同步数据(类似于 scp 命令),还可以本地同步数据(类似于 cp 命令)。不同于 cp 或 scp 的一点是,使用 rsync 命令备份数据时,不会直接覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。

[root@hdp101 roles]# cat  rsync/tasks/main.yml 
- name: Install rsync serveryum: name=rsync state=present- name: Configuration rsync servertemplate: src={{ item.src }} dest={{ item.dest }} mode={{ item.mode }}with_items:- { src: 'rsyncd.conf.j2', dest: '/etc/rsyncd.conf', mode: '0644' }- { src: 'rsyncd.passwd.j2', dest: '/etc/rsyncd.passwd', mode: '0600' }notify: Restart rsync server- name: Start rsync serverservice: name=rsyncd state=started enabled=yes
[root@hdp101 roles]# cat  rsync/handlers/main.yml 
- name: Restart rsync serverservice: name=rsyncd state=restarted [root@hdp101 roles]# cat  rsync/templates/rsyncd.conf.j2 
gid = www
port = 873
fake super = yes
user chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = true
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
##################################[backup]
path = /backup[data]
path = /data
[root@hdp101 roles]# cat  rsync/templates/rsyncd.passwd.j2 
rsync_backup:123456

运行: 

查看配置文件同步的结果

相关文章:

自动化运维工具一Ansible Roles实战

目录 一、Ansible Roles概述 1.1.roles官方的目录结构 1.2.Ansible Roles依赖关系 二、Ansible Roles案例实战 2.1.Ansible Roles NFS服务 2.2 Roles Memcached 2.3 Roles-rsync服务 一、Ansible Roles概述 之前介绍了 Playbook 的使用方法,对于批量任务的部…...

json 中有递归parentId节点转 c#实体类时如何处理

如果您有一个具有递归parentId节点的JSON数据,并且您需要将其转换为C#实体类,则可以使用以下方法: 创建一个类来表示JSON对象的节点,包括它的属性和子节点。 public class Node {public int Id { get; set; }public string Name …...

给大家介绍几个手机冷门但好用的小技巧

技巧一:拍照识别植物 手机的拍照识别植物功能是指在使用手机相机时,可以通过对植物进行拍照,并通过植物识别技术,获取植物的相关信息和资料。其主要优点如下: 方便实用:使用拍照识别植物功能,…...

2.3 定点乘法运算

学习目标: 如果我要学习定点乘法运算,我会按照以下步骤进行学习: 确定学习目标:明确学习定点乘法运算的目的和重点,以便有针对性地进行学习。 掌握基础知识:首先需要了解定点数和定点乘法的基础知识&…...

C++每日一练:打家劫室(详解动态规划法)

文章目录 前言一、题目二、分析三、代码总结 前言 这题目出得很有意思哈,打劫也是很有技术含量滴!不会点算法打劫这么粗暴的工作都干不好。 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 题目名称: 打家…...

Wireshark使用

Capture Filters 语法 <Protocol name><Direction><Hosts><Value><Logical operations><Expressions> e.g 1.tcp src port 443 只抓取来源端口是443的tcp数据 2.not arp 不获取arp数据 3.port 80 获取端口是80的数据&#xff0c;不指…...

这才是 SpringBoot 统一登录鉴权、异常处理、数据格式 的正确姿势

本篇将要学习 Spring Boot 统一功能处理模块&#xff0c;这也是 AOP 的实战环节 用户登录权限的校验实现接口 HandlerInterceptor WebMvcConfigurer 异常处理使用注解 RestControllerAdvice ExceptionHandler 数据格式返回使用注解 ControllerAdvice 并且实现接口 Response…...

Java面试题总结 | Java面试题总结6-MYSQL模块(持续更新)

Mysql 文章目录 Mysql关系型数据库和非关系型数据库的区别什么是ORM?-**mybatis**如何评估一个索引创建的是否合理&#xff1f;Count函数执行效果上&#xff1a;执行效率上&#xff1a;count(主键)和count(列名) 数据库的三大范式Mysql中char和varchar的区别数据库设计或者功能…...

Linux命令集(Linux文件管理命令--mv指令篇)

Linux命令集&#xff08;Linux文件管理命令--mv指令篇&#xff09; Linux文件管理命令集&#xff08;mv指令篇&#xff09;2. mv(move)1. 文件移动2. 递归移动目录3. 文件目录重命名4. 强制移动5. 备份覆盖的目标文件6. 试探性移动7. 显示移动进度8. 补集操作9. 修改文件的权限…...

不一样的 Git 之间 | GitLab vs GitHub vs Gitee vs GitCode

Git仓库对比&#xff1a;GitLab vs GitHub vs Gitee vs GitCode 在软件开发中&#xff0c;版本控制是必不可少的工具之一。Git作为目前最为流行的版本控制系统&#xff0c;也逐渐成为了开发者们的标配。但是&#xff0c;如何选择一个合适的Git仓库来存储您的代码呢&#xff1f;…...

海尔牵头IEEE P2786国际标准通过Sponsor投票并连任工作组主席

01 海尔牵头IEEE P2786国际标准 通过Sponsor投票 并连任工作组主席 海尔牵头制定的全球首个服装物联网国际标准IEEE P2786《Standard for General Requirements and Interoperability for Internet of Clothing》通过Sponsor投票&#xff0c;标志着该国际标准草案得到了行业…...

倾斜摄影超大场景的三维模型的顶层合并的纹理压缩与抽稀处理技术分析

倾斜摄影超大场景的三维模型的顶层合并的纹理压缩与抽稀处理技术分析 倾斜摄影超大场景的三维模型的顶层合并需要对纹理进行压缩和抽稀处理&#xff0c;以减小数据量和提高数据的传输和展示性能。以下是一种常用的纹理压缩和抽稀处理技术&#xff1a; 1、纹理图集 纹理瓦片化…...

linux命令之iostat详解

iostat 监视系统输入输出设备和CPU的使用情况 推荐Linux命令在线工具&#xff1a;linux在线查询工具 补充说明 iostat命令 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。同vmstat一样&#xff0c;ios…...

【C++】程序员必备知识:认识类与对象

【C】程序员必备知识&#xff1a;认识类与对象 ①.面向过程和面向对象②.类的引入③.类的定义Ⅰ.定义方式Ⅱ.命名规则建议&#xff1a; ④.类的访问限定符及封装Ⅰ.访问限定符Ⅱ.封装 ⑤.类的作用域⑥.类的实例化⑦.类的对象大小计算Ⅰ.如何计算&#xff1f;Ⅱ.类对象存储方式Ⅲ…...

python基础实战5-python基本结构

1 if语句 if语句是用来进行判断的&#xff0c;其使用格式如下 if 要判断的条件&#xff1a; 条件成立时&#xff0c;要做的事情 案例一&#xff1a; age 30 print("------if判断开始------") if age > 18:print("我成年了") print("------if判断…...

移动端异构运算技术 - GPU OpenCL 编程(基础篇)

一、前言 随着移动端芯片性能的不断提升&#xff0c;在移动端上实时进行计算机图形学、深度学习模型推理等计算密集型任务不再是一个奢望。在移动端设备上&#xff0c;GPU 凭借其优秀的浮点运算性能&#xff0c;以及良好的 API 兼容性&#xff0c;成为移动端异构计算中非常重要…...

QString类方法和变量简介(全)

QString类方法和变量简介 操作字符串(|append|insert|sprintf|QString::arg()|prepend|replace|trimmed|simplified)查询字符串(startsWith|endsWith|contains|localeAwareCompare|compare)字符串转换 标准C提供了两种字符串&#xff1a;一种是C语言风格的以"\0"字符…...

中移链控制台对接4A平台功能验证介绍

中移链控制台具备单独的注册登录页面&#xff0c;用户可通过页面注册或者用户管理功能模块进行添加用户&#xff0c;通过个人中心功能模块进行用户信息的修改和密码修改等操作&#xff0c;因业务要求&#xff0c;需要对中移链控制台的用户账号进行集中管理&#xff0c;统一由 4…...

必知的Facebook广告兴趣定位技巧,更准确地找到目标受众

在Facebook广告投放中&#xff0c;兴趣定位是非常重要的一环。兴趣定位不仅可以帮助我们找到我们想要的目标受众&#xff0c;还可以帮助我们避免一些常见的坑。今天&#xff0c;就让我们一起来看看必知的Facebook广告兴趣定位技巧&#xff0c;更准确地找到目标受众。 1.不要只关…...

【MySQL】慢查询+SQL语句优化 (内容源自ChatGPT)

慢查询SQL语句优化 1.什么是慢查询2.优化慢查询3.插入数据优化5.插入数据底层是什么6.页分裂7.页合并8.主键优化方式10.count 优化11.order by优化12.group by 优化13.limit优化14.update 优化15.innodb 三大特征 1.什么是慢查询 慢查询是指执行SQL查询语句所需要的时间较长&a…...

别再死磕公式了!用Ansoft Maxwell 2D给永磁无刷电机做仿真,保姆级操作流程(附避坑点)

永磁无刷电机仿真实战&#xff1a;从零掌握Ansoft Maxwell 2D的高效工作流 第一次打开Ansoft Maxwell 2D时&#xff0c;满屏的专业术语和复杂的参数设置界面确实容易让人望而生畏。作为从业十年的电机设计工程师&#xff0c;我完全理解这种面对专业仿真软件时的无力感——理论书…...

用 AI 生成视频?试试 Hailuo 视频生成 API!

在现代数字时代&#xff0c;视频内容的需求不断增长&#xff0c;而制作高质量视频的门槛也随之降低。今天&#xff0c;我想和大家分享一个强大的工具——Ace Data Cloud Hailuo 视频生成 API。这款 API 不仅支持文本转语音、多个声音切换和情感调整&#xff0c;还能为你提供清晰…...

Qwen3-0.6B-FP8快速上手:Anaconda环境下的Python开发配置

Qwen3-0.6B-FP8快速上手&#xff1a;Anaconda环境下的Python开发配置 想试试最新的轻量级大模型Qwen3-0.6B-FP8&#xff0c;但被Python环境搞得头大&#xff1f;别担心&#xff0c;今天咱们就来手把手搞定它。很多朋友在第一步——环境配置上就卡住了&#xff0c;要么是包版本…...

TrollInstallerX终极指南:一键在iOS设备上安装TrollStore的完整教程

TrollInstallerX终极指南&#xff1a;一键在iOS设备上安装TrollStore的完整教程 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 您是否一直在寻找一种简单可靠的方法&am…...

SCN随机配置网络模型在多特征分类预测中的应用

SCN随机配置网络模型SCN分类预测&#xff0c;SCN分类预测&#xff0c;多特征 输入模型。 多特征输入单输出的二分类及多分类模型。 程序内注释详细&#xff0c;直接替换数据就可以用。 程序语言为matlab&#xff0c;程序可出分类效果图&#xff0c;迭代优化图&#xff0c;混淆矩…...

Zrlog面试问答及问题解决方案

面试问答 结合 ZrLog 部署&#xff08;Maven 构建 环境配置 服务部署&#xff09;的全流程&#xff0c;整理排查 / 运维 / 开发三类高频问题&#xff0c;覆盖场景、原因、解答思路&#xff0c;可直接用于沟通或故障定位&#xff1a; 一、环境准备阶段高频问题 1. 执行 jav…...

锂离子电池热失控模型:1方程参数辨识与MATLAB实践

锂离子电池热失控模型&#xff1a;1方程参数辨识 锂离子电池热失控仿真&#xff0c;详细描述了如何利用热失控ARC数据和MATLAB软件进行热失控模型参数辨识的方法步骤&#xff0c;及MATLAB代码解析&#xff0c;从下图可见&#xff0c;拟合的结果具有较高的准确度。 本案例提供基…...

本地部署Qwen3大模型+OpenClaw接入实战教程:从零实现私有化AI助手

> **标签**: AI开发,大模型,Ollama,OpenClaw,Python,本地部署 > **阅读时间**: 约15分钟 > **难度**: 中级## 一、引言本地部署大模型可确保**数据不出境、不上云**&#xff0c;满足金融、医疗等行业的合规要求&#xff1b;同时长期使用成本更低&#xff0c;适合高频…...

科学图表数值提取:用WebPlotDigitizer实现研究数据还原与学术图表解析

科学图表数值提取&#xff1a;用WebPlotDigitizer实现研究数据还原与学术图表解析 【免费下载链接】WebPlotDigitizer WebPlotDigitizer: 一个基于 Web 的工具&#xff0c;用于从图形图像中提取数值数据&#xff0c;支持 XY、极地、三角图和地图。 项目地址: https://gitcode…...

Python AI用例生成效率实战手册(企业级自动化工作流全拆解)

第一章&#xff1a;Python AI用例生成效率的核心价值与企业级定位在AI工程化落地加速的当下&#xff0c;Python凭借其丰富的生态&#xff08;如LangChain、LlamaIndex、transformers、scikit-learn&#xff09;和低门槛的可编程性&#xff0c;已成为企业构建AI用例生成流水线的…...