Ansible自动化部署工具-role模式安装filebeat实际案例分析
语法以及实际案例
平时我们在进行日志收集的时候,往往会在每台机器上安装filebeat,并且由于每台机器运行服务的不同,那么收集日志的配置文件也是不一样的,如何快速高效的部署filebeat以及拥有不同的配置文件就是我们要思考的问题,当然不可能一台机器一台机器的修改配置文件。
接下来我将会以一个我自己写的filebeat相关的role举例,来分析role模式涉及的一些规范以及如何写一个好的任务编排, 案例中的filebeat的role模式拥有对filebeat的安装,更新配置的功能。
role其实是对之前使用playbook的文件目录进行了一些规范(比如必须有roles目录且和playbook入口文件在同一位置,roles目录下的各个特定role的目录也是固定命名的)。
代码已经上传github
https://github.com/HobbyBear/ansible-role-filebeat.git
整个项目的目录结构如下所示,filebeatop.yml到时候是我们执行ansible playbook命令的入口文件,我们可以使用这样的命令使用这个role , ansible-playbook -i hosts filebeatop.yml ,其中hosts目录就是存放inventory主机清单。
.
├── ReadMe.md
├── filebeatop.yml
├── group_vars
│ └── test.yml
├── hosts
│ ├── prod
│ └── test
└── roles└── filebeat├── handlers│ └── main.yml├── tasks│ ├── install.yml│ ├── main.yml│ ├── rpm.yml│ └── updatecfg.yml└── templates├── debug.conf├── filebeatbox.yml└── log.yml
filebeatop.yml 的内容如下,其中roles配置项可以配置多个role,不过案例中就只配置了一个filebeat的role,这个role的名称就是上述roles目录下的filebeat这个文件夹的名称。同时filebeatop.yml同时设置了变量version和logstashendpoint,不同的是version变量是role级别的。
- hosts: test roles: - role: filebeat version : '7.14.2' vars: logstashendpoint: 192.168.0.2:5054
接着了解下roles目录的结构,filebeat 就代表一个role,其下有handlers,tasks,templates目录,它们存放的内容如下,
roles
└── filebeat├── handlers│ └── main.yml├── tasks│ ├── install.yml│ ├── main.yml│ ├── rpm.yml│ └── updatecfg.yml└── templates├── debug.conf├── filebeatbox.yml└── log.yml
-
tasks 里面存放具体的Ansible 的各种模块定义的任务,其入口文件是main.yml 它里面可以通过include 引入其他task。就比如这个案例中,我在main.yml 引入了其他配置文件定义的任务。main.yml 代码如下, 可以看到在引入其他配置文件定义的任务时,我还用tags为任务打上了标签,这个标签可以让我们后续根据特定的标签执行任务。
- include: install.yml tags: - install - include: rpm.yml tags: - rpm - include: updatecfg.yml tags: - updatecfg
-
handlers 目录下存放任务的后续处理逻辑,它其实也是ansible的模块定义的各种任务,与tasks不同的是,它是专门放到tasks执行后执行的。例如在handlers的main.yml文件中,我定义了一个名为restart Filebeat service 的handler,handlers/main.yml代码如下
become 设置为yes,become_method 设置为sudo 代表在运行这个service的命令时是要以sudo权限运行的。
- name: restart Filebeat service become: yes become_method: sudo service: name: filebeat enabled: yes state: restarted
这个handler在tasks/updatecfg.yml中有被用到,如下,在更新完filebeat服务配置后,通过notify配置,定义所需的handler的名称,便可以在特定task执行完成后运行对应的handler。
- name: 更新服务配置 shell: "sudo systemctl daemon-reload" notify: - restart Filebeat service
-
templates 目录存放的是某些需要用到的配置文件模板,在模板文件中可以使用{{ 变量名 }} 引用,变量的定义可以在前面filebeatop.yml文件中vars,或者roles配置中定义,也可以放到与hosts目录同级的group_vars 目录中定义,Ansible 关于变量的定义方式有很多种,这里就不展开了。 拿案例中的group_vars举例,其目录下的文件名是inventory主机清单中的机器组的名称,比如我这里有个test的机器组,所以我在group_vars有个test.yml文件,内容如下,定义了两个变量 log_path和log_type。
log_path: "- /home/webserver/logs/box-api/box-api.log\r\n - /home/webserver/logs/box-bsk/box-bsk.log\r\n - /home/webserver/logs/box-flow/box-flow.log" log_type: box
这两个变量被 templates目录下的log.yml文件所引用。log.yml文件内容如下(是一个典型的filebeat设置日志采集路径的配置)
- type: log tail_files: true paths: {{ log_path}} fields: log_type: {{ log_type }}
如何使用这些模板文件呢,其实就是通过ansible的template模块,拿filebeat role中的updatecfg.yml定义的任务片段举例,将filebeat 相关的配置文件上传到主机上对应的目录。
- name: 传送配置文件 become: yes become_method: sudo template: src=log.yml dest=/home/webserver/local/filebeat-{{ version }}-linux-x86_64/log.yml owner=root group=root - name: 传送配置文件 become: yes become_method: sudo template: src=filebeatbox.yml dest=/home/webserver/local/filebeat-{{ version }}-linux-x86_64/filebeatbox.yml owner=root group=root
🤔思考如何利用role模式写好Ansible的任务编排
简单介绍完整个案例的目录和相关的文件后,我们从使用角度来分析如何写一个好的部署任务。
像上述案例中,我们可以执行下面的命令执行相应的部署,更新配置任务。
在filebeatop.yml 中指定要操作的机器组,以及filebeat的版本,日志输出的logstahsh端点。 在group_vars 中定义每个机器组上需要采集的日志路径
安装filebeat软件包
ansible-playbook -i hosts filebeatop.yml --tags "install"
安装filebeat service
ansible-playbook -i hosts filebeatop.yml --tags "rpm"
更新filebeat配置文件
ansible-playbook -i hosts filebeatop.yml --tags "updatecfg"
通过filebeat/tasks 引入其他任务配置文件时的 tags去区分要执行的任务,而整个role中则定义对应的组件相关的操作,这样能更好的维护对应组件的部署配置任务。
并且让roles相关的文件 只负责部署,而针对哪些机器部署的配置则从roles目录中分离出来,形成变量。这样的好处在于,后续对于其他机器组的配置,相同组件的不同版本的配置都可以不用去动roles目录下的文件了,只需要新增不同的机器组的变量或者修改filebeatop.yml中的版本号即可。
文章转载自: 蓝胖子的编程梦
原文链接:https://www.cnblogs.com/hobbybear/p/17824585.html
相关文章:
Ansible自动化部署工具-role模式安装filebeat实际案例分析
语法以及实际案例 平时我们在进行日志收集的时候,往往会在每台机器上安装filebeat,并且由于每台机器运行服务的不同,那么收集日志的配置文件也是不一样的,如何快速高效的部署filebeat以及拥有不同的配置文件就是我们要思考的问题&…...
B2B企业如何打造独立站:从策略到实施的全面指南
随着数字化转型的加速,B2B企业越来越认识到独立站的重要性。然而,如何建设一个优秀的独立站,以及如何将独立站与企业的整体战略相结合,是许多企业面临的挑战。本文将详细探讨B2B企业如何从策略到实施打造一个成功的独立站。 一、…...
JAVA 中集合取交集
日常工作 经常需要取两个数据集的交集。对常用的List 和Set集合做了一个测试 public static void main(String[] args) {List<Integer> list1 Lists.newArrayList();List<Integer> list2 Lists.newArrayList();Set<Integer> set3 Sets.newHashSet();Set&l…...
Android13 Launcher3 定制
去掉Google搜索栏 aosp/packages/apps/Launcher3/src_build_config/com/android/launcher3/BuildConfig.java 修改QSB_ON_FIRST_SCREEN为false public static final boolean QSB_ON_FIRST_SCREEN false;去掉抽屉菜单,所有应用都放到桌面 增加控制变量 aosp/pac…...
其他word转化为PDF的方式
将 Word 文档转换为 PDF 格式,除了使用 COM 自动化外,还有其他一些方法可以在 Java 中实现。这些方法通常更加可靠和跨平台。以下是一些常用的方法: 1. 使用 Apache POI 和 Apache PDFBox 这种方法涉及使用 Apache POI 库读取 Word 文档&am…...
【Axure】axure rp 导入元件库和使用,主流元件库下载使用
vant 元件库下载:Vant4 设计资源 element UI 元件库下载:element ui 设计资源 Andt Design Vue 下载设计资源:Andt Design Vue Andt Design Pro下载设计资源:Andt Design Pro Arco Design 设计资源:Arco Design …...
ISP 处理流程
#灵感# 摆烂时间太长了,感觉知识忘光光了。重新学习,常学常新。 因为公司文档都不让摘抄、截取,所以内容是工作的一些自己记录和网络内容,不对的欢迎批评指正。 1、ISP概述 ISP是Image Signal Processor 的简称,也就…...
【计算思维】少儿编程蓝桥杯青少组计算思维题考试真题及解析C
【科技素养】少儿编程蓝桥杯青少组计算思维题考试真题及解析 1.天平的左右两端分别放有一些砝码,如下图所示,右边的砝码不变,从左边最多拿走几个砝码,可以使天平左右两边平衡: A、1 B、2 C、3 D、4 2.把下面的图形…...
百望云斩获“新华信用金兰杯”ESG优秀案例 全面赋能企业绿色数字化
近年来,中国ESG蓬勃发展,在政策体系构建、ESG信披ESG投资和国际合作等方面都取得了阶段性成效,ESG生态不断完善。全社会对ESG的认识及实践也在不断深化,ESG实践者的队伍在不断发展壮大。 ESG作为识别企业高质量发展的重要指标&…...
bclinux aarch64 ceph 14.2.10 对象存储 http网关 CEPH OBJECT GATEWAY Civetweb
相关内容 bclinux aarch64 ceph 14.2.10 文件存储 Ceph File System, 需要部署mds: ceph-deploy mds-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【3】vdbench fsd 文件系统测试-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【2】vdbench rbd 块设…...
2023年亚太杯数学建模思路 - 复盘:人力资源安排的最优化模型
文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 描述 …...
【广州华锐互动】VR居家防火逃生模拟演练增强训练的真实性
VR软件开发公司广州华锐互动在消防培训领域已开发了多款VR产品,今天为大家介绍VR居家防火逃生模拟演练系统,这是一种基于虚拟现实技术的消防教育训练设备,通过模拟真实的火灾场景,让使用者身临其境地体验火灾逃生过程,…...
PaddleClas学习1——使用PPLCNet模型对车辆属性进行识别(python)
使用PPLCNet模型对车辆属性进行识别 1. 配置PaddlePaddle,PaddleClas环境1.1 安装PaddlePaddle(1)创建 docker 容器(2)退出/进入 docker 容器(3) 安装验证1.2 安装python3.8(可选)1.3 安装 PaddleClas2. 模型推理2.1 下载官方提供的车辆属性模型2.2 基于 Python 预测引…...
CSS 实现新拟态(Neumorphism) UI 风格
什么是新拟态(Neumorphism) UI 风格?网上似乎还没有一个准确统一的定义。按照我个人的通俗理解,就是将界面的一部分凸起来,另一部分凹下去,形成的一种错落有致的拟物风格。代表作是乌克兰设计师 Alexander Plyuto 在各平台发布的新…...
js 深度学习(六)
立即执行函数 immediate invoked function expression 自动执行 执行完成后立即释放 (function(){var a 1,b2;console.log(ab) }()) // w3c建议 (function(a,b){return ab; })(a,b); // 可以加参数 可以有返回值表达式才能被执行符号执行,被小括号包裹的是表达式…...
【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)
🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…...
React hooks(一):useState
1.React hooks React hooks是React16.8的新特性,可以让React函数组件具有状态,并提供类似componentDidMount和componentDidUpdate等生命周期方法。 React 早期版本,类组件可以在shouldComponentUpdate中,通过判断props和state是…...
springboot集成swagger3+解决页面无法访问问题
引入依赖 pom文件引入swagger3依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>配置启动文件 swagger使用ant_pattern_parser解析…...
mapreduce-maven--30.串联所有单词的字串
项目对象模型(Project Object Model,POM):Maven使用POM文件来描述项目的结构、依赖和构建设置。POM是一个XML文件,位于项目根目录下,并包含项目的基本信息、构建设置、依赖管理等。 依赖管理:M…...
Hive使用max case when over partition by 实现单个窗口取两个窗口的值(单个开窗函数,实际取两个窗口)
一、Hive开窗函数根据特定条件取上一条最接近时间的数据(单个开窗函数,实际取两个窗口) 针对于就诊业务,一次就诊,多个处方,处方结算时间可能不一致,然后会有多个AI助手推荐用药,会…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
