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

ansible-Role角色批量按照node_export节点,并追加信息到Prometheus文件中

文章目录

      • 剧本功能
    • inventory.yaml文件定义
    • deploy.yaml角色定义
    • node_exporter_lock角色定义
    • 任务角色main.yaml
      • node_exporter_tasks.yml角色
      • 触发任务notify
      • extra_tasks.yml角色
      • prometheus_node_config.j2模板文件
    • 执行命令
    • 查看变量

剧本功能

功能1: 批量执行node_export节点,并判断操作系统,有俩份文件
功能2: 获取当前组并追加到ROle角色通用变量里面提供全部角色使用
功能3: 任务角色里面又分任务执行一个安装一个收集信息
功能:其他功能懒得总结了,大家看文章吧

inventory.yaml文件定义

[equipment:vars]  
group = "equipment" 
[equipment]
WA510-生产-设备管理09  ansible_internal_ip=xxxx  ansible_host=xxxx
WA485-生产-设备管理08  ansible_internal_ip=xxxx  ansible_host=xxxx

image.png

deploy.yaml角色定义

- name: 任务总线become: truegather_facts: yeshosts: oa tasks:- name: 加载变量include_vars:file: ./vars/vars.yaml- name: 获取当前组名set_fact:group_name: "{{ group_names[0] }}"run_once: true- name: 生成 main.yml 文件lineinfile:path: "/root/ansible_role_k8s/init_roles/defaults/main.yml"regexp: '^group:'line: "group: {{ group_name }}"delegate_to: localhost  # 指定任务在本地执行run_once: true- name: 加载更新后的默认变量include_vars:file: "/root/ansible_role_k8s/init_roles/defaults/main.yml"  # 使用绝对路径delegate_to: localhost  # 指定任务在本地执行run_once: true- name: 执行 node_exporter 角色include_role:name: init_roles/node_exporter_lockwhen: "'node' in ansible_run_tags"tags: ['node']- name: 执行 init 角色include_role:name: init_roles/initwhen: "'ls' in ansible_run_tags"tags: ['ls']

/root/ansible_role_k8s/init_roles/defaults/main.yml文件如下

root@iZbp1bh3oeew2pt9bwrs4rZ:~/ansible_role_k8s/init_roles# cat ./defaults/main.yml
group: oa

node_exporter_lock角色定义

root@iZbp1bh3oeew2pt9bwrs4rZ:~/ansible_role_k8s/init_roles/node_exporter_lock# tree
.
├── files
│   ├── node_exporter
│   ├── node_exporter-1.8.1.linux-amd64.tar.gz
│   ├── node_exporter.service
│   └── 参数详解
├── handlers
│   └── main.yaml
├── tasks
│   ├── extra_tasks.yml
│   ├── main.6.5.yaml
│   ├── main.yaml
│   ├── main.yaml.bak
│   └── node_exporter_tasks.yml
└── templates├── main.yml.j2└── prometheus_node_config.j24 directories, 12 files

任务角色main.yaml

- name: 执行 node_exporter 任务include_tasks: node_exporter_tasks.ymltags: ['node']- name: 执行附加任务include_tasks: extra_tasks.ymltags: ['node']

image.png

node_exporter_tasks.yml角色

- name: 判断远程服务器有没有安装 node_exporter 服务shell: "pgrep -f 'node_exporter'"register: node_exporter_statusignore_errors: truetags: ['node']- name: 判断远程服务器 9100 端口有没有被占用shell: "ss -lntp | grep ':9100'"register: port_statusignore_errors: truetags: ['node']- name: 打印服务和端口占用情况debug:msg: "服务状态: {{ '存在' if node_exporter_status.rc == 0 else '不存在' }}, 端口状态: {{ '被占用' if port_status.rc == 0 else '未被占用' }}"tags: ['node']- block:- name: 传输并解压 node_exporter 包到指定目录unarchive:src: /root/ansible_role_k8s/init_roles/node_exporter_lock/files/node_exporter-1.8.1.linux-amd64.tar.gzdest: /usr/local/bin/mode: '0755'remote_src: no- name: 判断操作系统是 CentOS 6、CentOS 7,或者 Ubuntuset_fact:os_version: "{{ ansible_distribution }} {{ ansible_distribution_major_version }}"- name: 传输并配置 node_exporter 服务文件(适用于 CentOS 6)copy:src: /root/ansible_role_k8s/init_roles/node_exporter_lock/files/node_exporterdest: /etc/init.d/node_exportermode: '0755'when: os_version == 'CentOS 6'notify: - Reload systemd- Enable and start node_exporter (CentOS 6)- name: 传输并配置 node_exporter systemd 服务文件(适用于 CentOS 7 和 Ubuntu)copy:src: /root/ansible_role_k8s/init_roles/node_exporter_lock/files/node_exporter.servicedest: /etc/systemd/system/node_exporter.servicemode: '0755'when: os_version != 'CentOS 6'notify: - Reload systemd- Enable and start node_exporterwhen: port_status.rc == 1  # 仅当 9100 端口未被占用时执行整个 blocktags: ['node']- name: 记录未执行 block 任务的节点信息lineinfile:path: /var/log/ansible_node_exporter.logline: "Host {{ inventory_hostname }}: 服务状态: {{ '存在' if node_exporter_status.rc == 0 else '不存在' }}, 端口状态: {{ '被占用' if port_status.rc == 0 else '未被占用' }}"when: port_status.rc != 1  # 仅当 9100 端口被占用时执行delegate_to: localhost  # 在控制节点上执行,以便集中记录日志tags: ['node']- name: 打印任务执行完成信息debug:msg: "任务执行完成"tags: ['node']

触发任务notify

main.yaml

- name: Reload systemdcommand: systemctl daemon-reloadwhen: os_version != 'CentOS 6'- name: Enable and start node_exportersystemd:name: node_exporter.serviceenabled: yesstate: startedwhen: os_version != 'CentOS 6'- name: Enable and start node_exporter (CentOS 6)shell: chkconfig node_exporter on && service node_exporter startwhen: os_version == 'CentOS 6'

image.png

extra_tasks.yml角色

- name: 确保 prometheus_node 组已定义并且收集成功节点信息并去重assert:that: groups['prometheus_node'] is definedfail_msg: "The prometheus_node group is not defined in the inventory."run_once: truedelegate_to: localhosttags: ['node']- name: 收集成功节点信息set_fact:successful_nodes: "{{ groups['prometheus_node'] | map('extract', hostvars) }}"run_once: truedelegate_to: localhosttags: ['node']- name: 使用模板生成 Prometheus 配置片段template:src: prometheus_node_config.j2dest: "/tmp/prometheus_nodes_{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}.yml"delegate_to: localhostrun_once: truetags: ['node']- name: 在本地文件中追加成功节点信息shell: "cat {{ item }} >> /opt/prometheus/prometheus1.yml"with_fileglob:- "/tmp/prometheus_nodes_*.yml"delegate_to: localhostrun_once: truetags: ['node']

image.png

prometheus_node_config.j2模板文件

{% for host in successful_nodes %}- targets:- "{{ host.ansible_host }}:9100"labels:instance: "{{ host.inventory_hostname }}-{{ host.ansible_host }}"namespace: '{{ namespace }}'
{% endfor %}

image.png

执行命令

ansible-playbook deploy.yaml --tags node

image.png

image.png

image.png

查看变量

root@iZbp1bh3oeew2pt9bwrs4rZ:~/ansible_role_k8s/init_roles# cat ./defaults/main.yml
group: oa

查看 追加node节点信息

cat /opt/prometheus/prometheus1.yml 

image.png

大概思路就是这样,需要完整Role角色的请私聊我

image.png

相关文章:

ansible-Role角色批量按照node_export节点,并追加信息到Prometheus文件中

文章目录 剧本功能 inventory.yaml文件定义deploy.yaml角色定义node_exporter_lock角色定义任务角色main.yamlnode_exporter_tasks.yml角色触发任务notifyextra_tasks.yml角色prometheus_node_config.j2模板文件 执行命令查看变量 剧本功能 功能1: 批量执行node_ex…...

求最小公倍数 、小球走过路程计算 题目

题目 JAVA11 求最小公倍数分析:代码:大佬代码: JAVA12 小球走过路程计算分析:代码: JAVA11 求最小公倍数 描述 编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数。 输入描述:…...

【Android面试八股文】你能说一说为什么IO是耗时操作?

IO(输入/输出)操作之所以是耗时操作,主要是由于以下几个原因: 1. 物理设备的限制 机械动作:传统的硬盘驱动器(HDD)包含旋转的磁盘和移动的磁头,以读取或写入数据。这些机械动作需要时间完成。虽然固态硬盘(SSD)没有机械部件,但它们仍然受到电子信号传输速度的限制。…...

怎样增强 CLike 游戏的社交功能,促进玩家之间的互动和交流?

要增强CLike游戏的社交功能,以促进玩家之间的互动和交流,可以考虑以下几个方面: 添加聊天功能:在游戏中加入实时聊天功能,让玩家可以在游戏内互相交流。可以通过文本聊天或者语音聊天来实现。 社交平台集成&#xff1…...

12_YouOnlyLookOnce(YOLOv3)新一代实时目标检测技术

1.1 回顾V1和V2 V1:05_YouOnlyLookOnce(YOLOV1)目标检测领域的革命性突破-CSDN博客 V2:07_YouOnlyLookOnce(YOLOv2)Better,Faster,Stronger-CSDN博客 1.2 简介 YOLOv3(You Only Look Once version 3)是…...

安装 Nuxt.js 的步骤和注意事项

title: 安装 Nuxt.js 的步骤和注意事项 date: 2024/6/17 updated: 2024/6/17 author: cmdragon excerpt: Nuxt.js在Vue.js基础上提供的服务器端渲染框架优势,包括提高开发效率、代码维护性和应用性能。指南详细说明了从环境准备、Nuxt.js安装配置到进阶部署技巧&…...

【perl】环境搭建

1、Vscode Strawberry Perl 此过程与tcl环境搭建很类似,请参考我的这篇文章: 【vscode】 与 【tclsh】 联合搭建tcl开发环境_tclsh软件-CSDN博客 perl语言的解释器可以选择,strawberry perl。Strawberry Perl for Windows - Releases。 …...

【车载音视频AI电脑】全国产海事船载视频监控系统解决方案

海事船载视频监控系统解决方案针对我国快速发展的内河航运、沿海航运和远洋航运中存在的航行安全和航运监管难题,为船舶运营方、政府监管部门提供一套集视频采集、存储、回放调阅为一体的视频监控系统,对中大型船舶运行中的内部重要部位情况和外部环境进…...

Centos SFTP搭建

SFTP配置、连接及挂载教程_sftp连接-CSDN博客1、确认是否安装yum list installed | grep openssh-server 2、创建用户和组 sudo groupadd tksftpgroup sudo useradd -g tksftpgroup -d /home/www/tk_data -s /sbin/nologin tksftp01 sudo passwd tksftp013. 配置SFTP注意&a…...

【中学教资科目二】01教育基础

01教育基础 前言第一节 教育的产生与发展1.1 教育的起源 第二节 教育学的产生和发展2.1 中国教育学的发展2.2 西方教育学的发展2.3 独立及多样化阶段2.4 马克思教育学2.5 现代教育发展 第三节 教育与社会的发展3.1 教育与文化的关系 第四节 教育与人的发展、4.1 个体身心发展的…...

设计模式-享元模式Flyweight(结构型)

享元模式(Flyweight) 享元模式是一种结构型模式,它主要用于减少创建对象的数量,减少内存占用。通过重用现有对象的方式,如果未找到匹配对象则新建对象。线程池、数据库连接池、常量池等池化的思想就是享元模式的一种应用。 图解 角色 享元工…...

【刷题】LeetCode刷题汇总

目录 一、刷题题号1:两数之和 二、解法总结1. 嵌套循环2. 双指针 一、刷题 记录LeetCode力扣刷题 题号1:两数之和 双循环(暴力解法): class Solution {public int[] twoSum(int[] nums, int target) {int[] listne…...

树莓派pico入坑笔记,快捷键键盘制作

使用usb_hid功能制作快捷键小键盘,定义了6个键,分别是 ctrlz ctrlv ctrlc ctrla ctrlw ctrln 对应引脚 board.GP4, board.GP8, board.GP13 board.GP28, board.GP20, board.GP17 需要用到的库,记得复制进单片机存储里面 然后是main主程…...

华为鲲鹏应用开发基础:鲲鹏处理器及关键硬件特性介绍(二)

1. 鲲鹏简介 1.1 鲲鹏处理器简介 鲲鹏处理器是华为自研的基于ARMv8指令集开发的数据中心级处理器 1.2 基于鲲鹏主板的多样化计算产品 1.3 基于鲲鹏920的华为TaiShan(泰山) 200服务器 1.3.1 TaiShan 2280服务器内部视图 1.3.2 TaiShan 2280服务器物理结构 1.3.3 TaiShan 2280服…...

Vue.js结合ASP.NET Core构建用户登录与权限验证系统

1. 环境准备2. 创建项目3. Vue配置步骤一: 安装包步骤二: 配置文件步骤三: 页面文件 4. 后台配置 在本教程中,我将利用Visual Studio 2022的强大集成开发环境,结合Vue.js前端框架和ASP.NET Core后端框架,从头开始创建一个具备用户登录与权限验…...

【html】如何利用id选择器实现主题切换

今天给大家介绍一种方法来实现主题切换的效果 效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…...

服务器添加TLS域名证书核子之PKCS编解码

PKCS PKCS(Public Key Cryptography Standards)是一系列的标准,用于定义在公钥密码体系中涉及的一些基本结构和算法。PKCS#1 和 PKCS#8 是两个不同的标准,分别定义了不同的公钥私钥编码和封装格式。 PKCS#1 和PKCS#8区别 PKCS#1 PKCS#1 定义了一种用于RSA算法的公钥和私…...

使用 Selenium 自动化获取 CSDN 博客资源列表

使用 Selenium 自动化获取 CSDN 博客资源列表 在这篇博客中,我将向大家展示如何使用 Selenium 自动化工具来滚动并获取 CSDN 博客资源列表的全部数据。这篇文章的目标是通过模拟用户的滚动操作,加载所有的资源列表项,并提取它们的信息。 项目准备 首先,我们需要安装一些…...

智能制造全闪解决方案,八大痛点,一网打尽

当今&#xff0c;全球制造业面临多重大考验&#xff0c;如个性化需求剧增、成本上升、劳动力短缺及激烈竞争。应对这些挑战&#xff0c;智能制造成为转型关键&#xff0c;借助云技术、大数据、AI等前沿科技推动生产智能化&#xff0c;增强企业竞争力。 中国大力扶持智能制造&am…...

Python学习从0开始——Kaggle深度学习002

Python学习从0开始——Kaggle深度学习002 一、单个神经元1.深度学习2.线性单元示例 - 线性单元作为模型多个输入 3.Keras中的线性单元 二、深度神经网络1.层多种类型的层 2.激活函数3.堆叠密集层4.构建Sequential模型 三、随机梯度下降1.介绍2.损失函数3.梯度下降法1.梯度下降法…...

比利时海外媒体宣发,发稿促进媒体通稿发布新形势-大舍传媒

引言 随着全球化的推进&#xff0c;海外媒体的影响力也日益增强。在这一背景下&#xff0c;比利时海外媒体的宣发工作成为了媒体通稿发布的新形势。大舍传媒作为一家专注于宣传推广的公司&#xff0c;一直致力于与比利时博伊克邮报&#xff08;boicpost&#xff09;合作&#…...

摄影构图:人像摄影和风景摄影的一些建议

写在前面 博文内容涉及摄影中人像摄影和风景摄影的简单介绍《高品质摄影全流程解析》 读书笔记整理理解不足小伙伴帮忙指正 &#x1f603; 生活加油 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样…...

安卓实现输入快递单号生成二维码,摄像头扫描快递单号生成的二维码,可以得到快递信息

背景&#xff1a; 1、实现二维码的生成和识别2、实现andriod&#xff08;或虚拟机&#xff09;部署&#xff0c;调用摄像头3、实现网络管理&#xff0c;包括数据库【取消】2、3可以组队实现&#xff0c;1必须单人实现 过程&#xff1a; 安卓APP主界面 输入快递单号信息&#…...

Mysql特殊用法分享

不存在则插入&#xff0c;存在则更新的2种写法 前置使用条件&#xff0c;必须有唯一索引 -- 1 REPLACE INTO REPLACE INTO typora.ip_view_times_record (ip, view_times, url) VALUES(10.25.130.64, 1, https://10.25.168.80/fhh/index.html?urlindex.md543);-- 2 ON DUPLI…...

一个开源的快速准确地将 PDF 转换为 markdown工具

大家好&#xff0c;今天给大家分享的是一个开源的快速准确地将 PDF 转换为 markdown工具。 Marker是一款功能强大的PDF转换工具&#xff0c;它能够将PDF文件快速、准确地转换为Markdown格式。这款工具特别适合处理书籍和科学论文&#xff0c;支持所有语言的转换&#xff0c;并…...

可通过小球进行旋转的十字光标(vtkResliceCursor)

前一段事件看到VTK的一个例子&#xff1a; 该案例是vtk.js写的&#xff0c;觉得很有意思&#xff0c;个人正好也要用到&#xff0c;于是萌生了用C修改VTK源码来实现该功能的想法。原本以为很简单&#xff0c;只需要修改一下vtkResliceCursor就可以了&#xff0c;加上小球&#…...

python遍历文件夹并计算某类文件的数量,制图像文件到目标文件夹

python遍历文件夹并计算某类文件的数量&#xff0c;制图像文件到目标文件夹 在Python中&#xff0c;你可以使用os和os.path模块来遍历文件夹&#xff08;目录&#xff09;。下面是一个简单的示例&#xff0c;展示了如何遍历一个文件夹中的所有文件和子文件夹&#xff1a; imp…...

网络层只懂路由?这9个知识点被严重低估了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 网络层想必你已经耳熟能详&#xff0c;它的作用自然是不容小觑。 它负责将数据从源头准确地投递到目的地&am…...

最新的kali Linux源,解决apt update报错说没有数字签名

原因&#xff1a; 国内源的地址大部分都是http开头&#xff0c;这些地址早就无法使用。 解决方案&#xff1a; wget archive.kali.org/archive-key.asc //下载签名 apt-key add archive-key.asc //安装签名 另外&#xff0c;需…...

RAG与Langchain简介

RAG与Langchain简介 什么是RAGRAG解决的问题RAG工作流程RAG调优策略LangChain简介 什么是RAG 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;&#xff0c;主要是通过从外部给大模型补充一些知识&#xff0c;相当于给模型外挂了一个知识库&#xff0c;让…...

网站建设初学者必学/seo 优化公司

目录 分析静态页面静态vs动态本次项目页面分析模板抽取base目录下的base.htmlnewsnews下主页index.htmlnews下的new_detail.htmlnews下search.htmldocdoc下docDownload.htmlusersusers下的login.htmlusers下的registercoursecourse下的course.htmlcourse下的course_detail.html…...

个人购买域名做企业网站/厦门网站制作

nginx -s reload &#xff1a;修改配置后重新加载生效nginx -s reopen &#xff1a;重新打开日志文件nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确关闭nginx&#xff1a;nginx -s stop :快速停止nginx quit &#xff1a;完整有序的停止nginx其他的停…...

做宣传单赚钱的网站/本地服务推广平台哪个好

过渡Transition过渡组效果的目标都是让本图层以各种形态逐渐消失&#xff0c;直至完全显示出下方图层或指定图层。除“光圈擦除”之外的所有过渡效果都有“过渡完成”属性。当此属性为 100% 时&#xff0c;过渡完成&#xff0c;自身变得完全透明&#xff0c;底层图层将显现出来…...

aspx网站使用什么做的/优化网址

1、写一个脚本&#xff0c;判断当前系统上所有用户的shell是否为可登录shell&#xff08;即用户的shell不是/sbin/nologin&#xff09;&#xff1b;分别这两类用户的个数&#xff1b;通过字符串比较来实现&#xff1b;declare -a shell declare sum_login0 declare sum_n…...

做网站公众号要多少钱/今日新闻7月1日

精品刷题路线参考&#xff1a; https://github.com/youngyangyang04/leetcode-master https://github.com/chefyuan/algorithm-base 哈希表基础 哈希表也叫散列表&#xff0c;哈希表是一种映射型的数据结构。 哈希表是根据关键码的值而直接进行访问的数据结构。 就好像老三和老…...

江苏手机网站建设/优秀的品牌策划案例

原型与原型链图 栈&#xff08;stack&#xff09;&#xff1a;由编译器自动分配释放&#xff0c;存放函数参数值&#xff0c;局部变量&#xff0c;先进后出的一个队列 堆&#xff08;heap&#xff09;&#xff1a;一般由程序员分配释放&#xff0c;集合&#xff0c;无序 原型…...