前段时间在GitHub[1]上发现了一个Ansible巡检服务的Roles, 今天给大家分享一下!
Ansible Role
的方式对Linux系统进行资源巡检,生成巡检报告后通过邮件发送给接收人。ansible [core 2.12.2]
os `Centos 7 X64`
python version = 3.10.2 (main, Feb 2 2022, 06:19:27)
filter_plugins/os-check.py [get_check_data]
bash
说明,此处的过滤器插件要放在ansible指定的filter_plugins的位置,我这里习惯将ansible的配置文件放在ansible的统一配置仓库下,便于迁移以及适应环境:
roles/oss_check/files/check_linux.sh
在目标节点执行获取资源数据,并以json结构体返回。jinja2
模板将获取的数据渲染到模板文件中roles/oss_check/templates/report-cssinline.html
,生成的文件存放在指定的目录中。report-cssinline.html
是将css设置以inline
的方式存储的html文件,report.html
才是源模板文件,修改完源模板文件后,使用Responsive Email CSS Inliner[2]进行转换下,才能更好的兼容邮件显示。get_check_data
过滤器是从hostvars
中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。采集出的数据,会通过设置好的阈值分为三个档次,
集群节点扫描一般都是主动查看集群运行状态,主观判断的集群节点运行的状态,一般都会在节假日之前进行扫描一次,当然也可以通过自动化工具进行定期扫描,比如jenkins.
filter_plugins/os-check.py
放在配置文件指定的filter_plugin中---
- name: 服务器巡检
hosts: qa_unix
gather_facts: false
vars:
check_report_path: /tmp
check_mail_host: "smtp.163.com"
check_mail_port: "465"
check_mail_username: "demo@163.com"
check_mail_password: "demo@163.com邮箱的密码"
check_mail_to: [ "接收人的邮箱地址" ]
check_email_title: "Ansible 集群巡检报告"
check_email_env: "QA"
roles:
- os-check
inventory/qa.ini
是待执行环境的inventory,最后执行就OK了,/usr/bin/ansible-playbook -i inventory/qa.ini playbooks/os_check_qa.yaml