文章目錄
- 一、核心功能描述
- 二、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角色”
請不要以此視為定論,這只是我的個人經驗