文章目录
- 一、核心功能描述
- 二、roles内容
- 2.1 文件结构
- 2.2 主配置文件
- 2.3 tasks文件内容
- 2.4 vars文件内容
免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn
一、核心功能描述
这个 Ansible Role 的核心功能是:自动化部署 Prometheus Node Exporter 监控代理到目标主机,并完成全套运行环境配置。
-
软件部署与配置
-
自动下载并解压指定版本的 Node Exporter 二进制包(版本可配置)
-
创建版本无关的符号链接
/etc/node_exporter
指向实际安装目录 -
监听端口可配置(示例中为 29100)
-
-
服务管理
-
创建 systemd 服务单元文件
zk_node_exporter.service
-
配置服务启动参数(包含监听端口配置)
-
实现服务自启动:
systemctl daemon-reload
+ 启用服务
-
-
安全策略
-
自动配置 firewalld 防火墙规则
-
实现 IP 白名单机制:仅允许指定 IP(192.141.106.5)访问监控端口
-
端口可配置(示例中为 29100)
-
-
变量化管理
-
通过
node_exporter_version
变量控制软件版本 -
服务端口通过 ExecStart 参数可配置(当前硬编码为 29100)
-
防火墙规则中的端口和 IP 可扩展(当前为固定值)
-
可以根据自己的实际需求修改脚本
二、roles内容
2.1 文件结构
node-exporter
|-- files
| |-- create_service.sh
| `-- node_exporter-1.3.1.linux-amd64.tar.gz
|-- tasks
| |-- enable.yml
| |-- firewalld.yml
| |-- link.yml
| |-- main.yml
| |-- service.yml
| `-- unarchive.yml
`-- vars`-- main.yml3 directories, 9 files
2.2 主配置文件
---
- hosts: allremote_user: rootserial: 5roles:- node-exporter
2.3 tasks文件内容
- main.yml
- include: unarchive.yml
- include: link.yml
- include: service.yml
- include: firewalld.yml
- include: enable.yml
- include: unarchive.yml
- name: unarchive node-exporterunarchive: src=node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz dest=/etc/
- include: link.yml
- name: create node-exporter linkfile: src=/etc/node_exporter-{{ node_exporter_version }}.linux-amd64 path=/etc/node_exporter state=link
- include: service.yml(可以优化,用file模块实现)
- name: create servicescript: create_service.sh
- include: firewalld.yml(可以优化,用firewalld模块实现)
- name: create firewalld rulesshell: firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.141.106.5" port protocol="tcp" port="29100" accept';firewall-cmd --reload
- include: enable.yml
- name: daemon-reloadshell: systemctl daemon-reload
- name: enable & startservice: name=zk_node_exporter state=started enabled=yes
2.4 vars文件内容
- main.yml
node_exporter_version: 1.3.1
- files文件内容(可以将此脚本优化成service文件,用file模块实现复制)
create_service.sh
#!/bin/bash
cat > /usr/lib/systemd/system/zk_node_exporter.service <<EOF
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target[Service]
Type=simple
ExecStart=/etc/node_exporter/node_exporter --web.listen-address=:29100
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
如果你不请什么是ansible中的角色,动动你的小手,跳转过去看看呗“roles角色”
请不要以此视为定论,这只是我的个人经验